分享

简单介绍如何集成个推推送ios版SDK

 没原创_去搜索 2015-07-10
1)新建工程

图片4.png 

注意:Bundle Identifier要和创建应用的Bundle ID一致

    2)添加个推SDK所需的静态库和头文件,导入必要的框架。

图片5.png 

把刚才下载的上图三个文件添加到工程目录中。

添加一个test1.wav的测试音乐文件,用来测试接受推送消息的提示音。

设置 Search Paths 下的Header Search Paths,比如SDK文件夹与工程文件在同一级目录下,则都设置为"$(SRCROOT)/[文件夹名称]"即可。

个推SDK依赖几个额外的系统库支持,还需要导入以下5个库:

libz.dylib

libsqlite3.dylib

Security.framework

SystemConfiguration.framework

CFNetwork.framework

    3)调用代码监听系统实现,调用相关API。

a.创建个推实例

方法: 
1        + (GexinSdk *)createSdkWithAppId:(NSString *)appid 
2                                 appKey:(NSString *)appKey 
3                              appSecret:(NSString *)appSecret 
4                              appVersion:(NSString *)aAppVersion
5        delegate:(id<GexinSdkDelegate>)delegate
6                                  error:(NSError **)error;

请求参数:appid appKey appSecret为创建应用时生成的aAppVersion为自定义版本,示例:
1        if (!_gexinPusher) {GexinSdk *_gexinPusher;
2        NSError *err = nil;
3        _gexinPusher = [GexinSdk createSdkWithAppId:appID appKey:appKey appSecret:appSecret appVersion:@"0.0.0" delegate:self error:&err];}

b.注册APNS

示例: 
1        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];

c.注册device token

方法:
1        - (void)registerDeviceToken:(NSString *)deviceToken;

请求参数:deviceToken是从UIApplication的didRegisterForRemoteNotificationsWithDeviceToken回调函数获得该值并去掉<>符号和空格得到的字符串。示例:
1        NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
2        _deviceToken = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
3        if (_gexinPusher) {
4                [_gexinPusher registerDeviceToken:_deviceToken];}

d.如果deviceToken注册失败,通知个推服务器
1        if (_gexinPusher) {
2                [_gexinPusher registerDeviceToken:@""];

e.个推SDK注册成功会生成clientId
1        - (void)GexinSdkDidRegisterClient:(NSString *)clientId;


f.给用户打标签

方法:
1        - (BOOL)setTags:(NSArray *)tags;

参数:tags:字符串对象数组,不能为nil。只能包含中文字符、英文字母、0-9、空格、+-*.的组合。

返回值:如果tags参数不合法,返回NO。示例:
1        NSArray *tagArray=[NSArray arrayWithObjects:@"tag1",@"tag2", nil];
2            if(![_gexinPusher setTags:tagArray])
3            {  NSLog(@"注册tag失败");
4            }else{
5            NSLog(@"注册tag成功");}

g.收到个推信息

方法:
1        - (NSData *)retrivePayloadById:(NSString *)payloadId;

请求参数:payloadId是接收的推送消息的id,返回值:无法取到消息内容,返回nil,示例: 
1        NSData *payload = [_gexinPusher retrivePayloadById:payloadId];
2            NSString *payloadMsg = nil;
3            if (payload) {
4                payloadMsg = [[NSString alloc] initWithBytes:payload.bytes
5                                                      length:payload.length
6                                                    encoding:NSUTF8StringEncoding];}

h.获取启动时收到的APN
1        NSDictionary *message = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
2        if (message) {
3                NSString *payloadMsg = [message objectForKey:@"payload"];
4                NSString *msg=[message objectForKey:@"message"];
5                NSString *record = [NSString stringWithFormat:@"[APN]%@, payload:%@,message:%@", [NSDate date], payloadMsg,msg]; }

i.处理收到的APN消息

在- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userinfo方法里
1        NSString *payloadMsg = [userinfo objectForKey:@"payload"];
2            NSString *message=[[[userinfo objectForKey:@"aps"]objectForKey:@"alert"]objectForKey:@"body"];
3            NSString *record = [NSString stringWithFormat:@"[APN]%@, payload:%@, message:%@", [NSDate date], payloadMsg,message];

API的具体使用方法请参考详细DEMO.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多