APP集成多盟积分墙

在应用中可以集成多盟或者其他第三方移动广告商的积分墙增加自己收入。这篇文章简单介绍如何在应用中集成多盟的积分墙。


积分墙是用户完成移动广告商提供的积分任务后获取的相应积分,积分可以转换成游戏中的金币或者道具。首先你需要去多盟创建一个你的应用,创建完毕之后,你会得到一个PublishID,对应你的app。


这里简单写了一个积分墙Manager类,如果大家有需要,可以直接集成到你们的app中。


你只需要在显示积分墙的时候调用如下代码即可加载多盟积分墙。

[[CPOfferWallManager shareManager] presentOfferWall];

CPOfferWallManager.h头文件

//
//  CPOfferWallManager.h
//  ChickenRun
//
//  Created by yangkun on 7/5/13.
//
//

#import <Foundation/Foundation.h>
#import "DMOfferWallViewController.h"

#define PUBLISHER_ID @"Your App PublishID" //替换成你的publishID

@interface CPOfferWallManager : NSObject<DMOfferWallDelegate,UIAlertViewDelegate> {
    DMOfferWallViewController *_offerWallController;
    int _lastConsumed;
}

+(CPOfferWallManager *)shareManager;
-(void)presentOfferWall;

@end

CPOfferWallManager.m文件

//
//  CPOfferWallManager.m
//  ChickenRun
//
//  Created by yangkun on 7/5/13.
//
//

#import "CPOfferWallManager.h"
#import "DataManager.h"
#import "AppDelegate.h"

static CPOfferWallManager *_manager;

@implementation CPOfferWallManager

+(CPOfferWallManager*)shareManager {
    if( _manager == nil ) {
        _manager = [[CPOfferWallManager alloc] init];
    }
    return _manager;
}

-(id)init {
    if( self = [super init] ) {
        _lastConsumed = 0;
        _offerWallController = [[DMOfferWallViewController alloc] initWithPublisherID:PUBLISHER_ID];
        _offerWallController.disableStoreKit = NO;
        
        _offerWallController.delegate = self;
        _offerWallController.rootViewController = [AppDelegate sharedAppDelegate].rootViewController;
    }
    return self;
}

-(void)dealloc {
    _offerWallController.delegate = nil;
    [_offerWallController release];
    [super dealloc];
}

-(void)presentOfferWall {
    // 显示积分墙,并加载积分
    [_offerWallController presentOfferWall];
    [_offerWallController requestOnlinePointCheck];
}

#pragma DMOfferWallDelegate
// 积分墙开始加载数据。
- (void)offerWallDidStartLoad {
    NSLog(@"offerWallDidStartLoad");
}

// 积分墙加载完成。此方法实现中可进行积分墙入口Button显示等操作。
- (void)offerWallDidFinishLoad {
    NSLog(@"offerWallDidFinishLoad");
}

// 积分墙加载失败。可能的原因由error部分提供,例如网络连接失败、被禁用等。建议在此隐藏积分墙入口Button。
- (void)offerWallDidFailLoadWithError:(NSError *)error {
    NSLog(@"offerWallDidFailLoadWithError:%@", error);
}

-(void)offerWallDidClosed{
    NSLog(@"offer Wall closed!");
}

#pragma mark Point Check Callbacks
// 积分查询成功之后,回调该接口,获取总积分和总已消费积分。
- (void)offerWallDidFinishCheckPointWithTotalPoint:(NSInteger)totalPoint
                             andTotalConsumedPoint:(NSInteger)consumed {
    NSLog(@"offerWallDidFinishCheckPoint");
    
    //加载积分信息成功后立即消费积分
    if( totalPoint > consumed ) {
        _lastConsumed = totalPoint-consumed;
        
        //告知用户积分消费
        NSString *msg = [NSString stringWithFormat:@"You still have %d offer wall points. Do you want exchange them to coins?", _lastConsumed];
        UIAlertView * alertView = [[[UIAlertView alloc] initWithTitle:@"Congratulations"
                                                              message:msg
                                                             delegate:self
                                                    cancelButtonTitle:@"Cancel"
                                                    otherButtonTitles:@"OK",nil] autorelease];
        [alertView show];
    }
}

// 积分查询失败之后,回调该接口,返回查询失败的错误原因。
- (void)offerWallDidFailCheckPointWithError:(NSError *)error {
    NSLog(@"offerWallDidFailCheckPointWithError:%@", error);
}

#pragma mark Consume Callbacks
// 消费请求正常应答后,回调该接口,并返回消费状态(成功或余额不足),以及总积分和总已消费积分。
- (void)offerWallDidFinishConsumePointWithStatusCode:(DMOfferWallConsumeStatusCode)statusCode
                                          totalPoint:(NSInteger)totalPoint
                                  totalConsumedPoint:(NSInteger)consumed {
    NSLog(@"offerWallDidFinishConsumePoint");
    switch (statusCode) {
        case DMOfferWallConsumeStatusCodeSuccess:{
            //1个积分10个金币
            [DataManager shareManager].coins = [DataManager shareManager].coins + _lastConsumed*10;
            
            //告知用户积分消费
            NSString *msg = [NSString stringWithFormat:@"You get %d coins successfully from offer wall!", _lastConsumed*10];
            UIAlertView * alertView = [[[UIAlertView alloc] initWithTitle:@"Congratulations"
                                                                  message:msg
                                                                 delegate:nil
                                                        cancelButtonTitle:@"OK"
                                                        otherButtonTitles:nil] autorelease];
            [alertView show];
            
            _lastConsumed = 0;
            NSLog(@"积分消费成功");
        }
            break;
        case DMOfferWallConsumeStatusCodeInsufficient:{
            NSLog(@"积分消费失败,余额不足");
            _lastConsumed = 0;
        }
            break;
        default:
            break;
    }
}

// 消费请求异常应答后,回调该接口,并返回异常的错误原因。
- (void)offerWallDidFailConsumePointWithError:(NSError *)error {
    NSLog(@"offerWallDidFailConsumePointWithError:%@", error);
    
    // 重新检查积分信息并消费积分
    [_offerWallController requestOnlinePointCheck];
}

#pragma mark UIAlertViewDelegate

-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
    if( buttonIndex == 1) {
        [_offerWallController requestOnlineConsumeWithPoint:_lastConsumed];
    }
}


@end


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值