1)新建工程 注意:Bundle Identifier要和创建应用的Bundle ID一致 2)添加个推SDK所需的静态库和头文件,导入必要的框架。 把刚才下载的上图三个文件添加到工程目录中。 添加一个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. |
|