版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
详细解答可以参考官方帮助文档
> iOS 10系统的设备需注意,源于工信部的要求,国行手机首次安装App时,会弹出一个询问用户“是否允许应用访问数据”的弹框,如下图所示。在用户点击允许前,或点击不允许,App的网络环境是不通的,会导致推送SDK的初始化失败,推送服务不能正常使用。推送各接口内部是有重试机制的,但是,建议用户在业务层,也要捕获处理SDK接口错误回调,确保正确获知SDK接口调用状态。

- (void)initCloudPush {// SDK初始化[CloudPushSDK asyncInit:@"*****" appSecret:@"*****" callback:^(CloudPushCallbackResult *res) {if (res.success) {NSLog(@"Push SDK init success, deviceId: %@.", [CloudPushSDK getDeviceId]);} else {NSLog(@"Push SDK init failed, error: %@", res.error);}}];}
/*** 注册苹果推送,获取deviceToken用于推送** @param application*/- (void)registerAPNS:(UIApplication *)application {if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {// iOS 8 Notifications[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)categories:nil]];[application registerForRemoteNotifications];}else {// iOS < 8 Notifications[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];}}/** 苹果推送注册成功回调,将苹果返回的deviceToken上传到CloudPush服务器*/- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {[CloudPushSDK registerDevice:deviceToken withCallback:^(CloudPushCallbackResult *res) {if (res.success) {NSLog(@"Register deviceToken success.");} else {NSLog(@"Register deviceToken failed, error: %@", res.error);}}];}/** 苹果推送注册失败回调*/- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {NSLog(@"didFailToRegisterForRemoteNotificationsWithError %@", error);}
/*** 注册推送消息到来监听*/- (void)registerMessageReceive {[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(onMessageReceived:)name:@"CCPDidReceiveMessageNotification"object:nil];}/*** 处理到来推送消息** @param notification*/- (void)onMessageReceived:(NSNotification *)notification {CCPSysMessage *message = [notification object];NSString *title = [[NSString alloc] initWithData:message.title encoding:NSUTF8StringEncoding];NSString *body = [[NSString alloc] initWithData:message.body encoding:NSUTF8StringEncoding];NSLog(@"Receive message title: %@, content: %@.", title, body);}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// 点击通知将App从关闭状态启动时,将通知打开回执上报// [CloudPushSDK handleLaunching:launchOptions];(Deprecated from v1.8.1)[CloudPushSDK sendNotificationAck:launchOptions];return YES;}/** App处于启动状态时,通知打开回调*/- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {NSLog(@"Receive one notification.");// 取得APNS通知内容NSDictionary *aps = [userInfo valueForKey:@"aps"];// 内容NSString *content = [aps valueForKey:@"alert"];// badge数量NSInteger badge = [[aps valueForKey:@"badge"] integerValue];// 播放声音NSString *sound = [aps valueForKey:@"sound"];// 取得Extras字段内容NSString *Extras = [userInfo valueForKey:@"Extras"]; //服务端中Extras字段,key是自己定义的NSLog(@"content = [%@], badge = [%ld], sound = [%@], Extras = [%@]", content, (long)badge, sound, Extras);// iOS badge 清0application.applicationIconBadgeNumber = 0;// 通知打开回执上报// [CloudPushSDK handleReceiveRemoteNotification:userInfo];(Deprecated from v1.8.1)[CloudPushSDK sendNotificationAck:userInfo];}
如果使用推送模块,请参考移动推送常见问题