3 接入移动推送iOS SDK
本节以ReactNative实例工程AwesomeProject作为实例工程为大家介绍iOS推送
手动集成 SDK 的步骤。
3.1 控制台下载SDK
参考:
推送SDK下载
3.2 SDK集成
- 打开 AwesomeProject/ios/AwesomeProject.xcodeproj,将推送iOS SDK拖进工程中。
- Build Phases -> Link Binary With Libraries中,引入下列的公共包:libz.tbd
- libresolv.tbd
- CoreTelephony.framework
- SystemConfiguration.framework
- libsqlite3.tbd(阿里云平台下载的SDK无需依赖,百川平台下载的SDK需要依赖)
注意:Targets -> Build Settings -> Linking -> Other Linker Flags,请加上-ObjC这个属性,否则推送服务无法正常使用。如果之前已经设置了force_load,需要设置-force_load <framework_path>/CloudPushSDK.framework/CloudPushSDK。
3.3 Xcode 设置
Xcode 8 打开推送开关,TARGETS > Capabilitie > Push Notifications,并会自动在项目中生成 .entitlement)文件。
3.4 SDK配置
- [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]void[backcolor=transparent])[backcolor=transparent]initCloudPush [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]CloudPushSDK[backcolor=transparent] asyncInit[backcolor=transparent]:@[backcolor=transparent]"*****"[backcolor=transparent] appSecret[backcolor=transparent]:@[backcolor=transparent]"*****"[backcolor=transparent] callback[backcolor=transparent]:^([backcolor=transparent]CloudPushCallbackResult[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]res[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]res[backcolor=transparent].[backcolor=transparent]success[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"Push SDK init success, deviceId: %@."[backcolor=transparent],[backcolor=transparent] [backcolor=transparent][[backcolor=transparent]CloudPushSDK[backcolor=transparent] getDeviceId[backcolor=transparent]]);
- [backcolor=transparent] [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]else[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"Push SDK init failed, error: %@"[backcolor=transparent],[backcolor=transparent] res[backcolor=transparent].[backcolor=transparent]error[backcolor=transparent]);[backcolor=transparent]
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}];
- [backcolor=transparent] [backcolor=transparent]}
- 向苹果APNs注册获取deviceToken并上报到阿里云推送服务器;
- [backcolor=transparent] [backcolor=transparent]/**
- [backcolor=transparent] * 注册苹果推送,获取deviceToken用于推送
- [backcolor=transparent] *
- [backcolor=transparent] * @param application
- [backcolor=transparent] */
- [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]void[backcolor=transparent])[backcolor=transparent]registerAPNS[backcolor=transparent]:([backcolor=transparent]UIApplication[backcolor=transparent] [backcolor=transparent]*)[backcolor=transparent]application [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([[[[backcolor=transparent]UIDevice[backcolor=transparent] currentDevice[backcolor=transparent]][backcolor=transparent] systemVersion[backcolor=transparent]][backcolor=transparent] floatValue[backcolor=transparent]][backcolor=transparent] [backcolor=transparent]>=[backcolor=transparent] [backcolor=transparent]8.0[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]// iOS 8 Notifications
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]application registerUserNotificationSettings[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]UIUserNotificationSettings[backcolor=transparent] settingsForTypes[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]([backcolor=transparent]UIUserNotificationTypeSound[backcolor=transparent] [backcolor=transparent]|[backcolor=transparent] [backcolor=transparent]UIUserNotificationTypeAlert[backcolor=transparent] [backcolor=transparent]|[backcolor=transparent] [backcolor=transparent]UIUserNotificationTypeBadge[backcolor=transparent])
- [backcolor=transparent] categories[backcolor=transparent]:[backcolor=transparent]nil[backcolor=transparent]]];
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]application registerForRemoteNotifications[backcolor=transparent]];
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]else[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]// iOS < 8 Notifications
- [backcolor=transparent] [backcolor=transparent][[[backcolor=transparent]UIApplication[backcolor=transparent] sharedApplication[backcolor=transparent]][backcolor=transparent] registerForRemoteNotificationTypes[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]([backcolor=transparent]UIRemoteNotificationTypeAlert[backcolor=transparent] [backcolor=transparent]|[backcolor=transparent] [backcolor=transparent]UIRemoteNotificationTypeBadge[backcolor=transparent] [backcolor=transparent]|[backcolor=transparent] [backcolor=transparent]UIRemoteNotificationTypeSound[backcolor=transparent])];
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent]}
- [backcolor=transparent]/*
- [backcolor=transparent] * 苹果推送注册成功回调,将苹果返回的deviceToken上传到CloudPush服务器
- [backcolor=transparent] */
- [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]void[backcolor=transparent])[backcolor=transparent]application[backcolor=transparent]:([backcolor=transparent]UIApplication[backcolor=transparent] [backcolor=transparent]*)[backcolor=transparent]application didRegisterForRemoteNotificationsWithDeviceToken[backcolor=transparent]:([backcolor=transparent]NSData[backcolor=transparent] [backcolor=transparent]*)[backcolor=transparent]deviceToken [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent][[backcolor=transparent]CloudPushSDK[backcolor=transparent] registerDevice[backcolor=transparent]:[backcolor=transparent]deviceToken withCallback[backcolor=transparent]:^([backcolor=transparent]CloudPushCallbackResult[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]res[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]res[backcolor=transparent].[backcolor=transparent]success[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"Register deviceToken success."[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]else[backcolor=transparent] [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"Register deviceToken failed, error: %@"[backcolor=transparent],[backcolor=transparent] res[backcolor=transparent].[backcolor=transparent]error[backcolor=transparent]);
- [backcolor=transparent] [backcolor=transparent]}
- [backcolor=transparent] [backcolor=transparent]}];
- [backcolor=transparent]}
- [backcolor=transparent]/*
- [backcolor=transparent] * 苹果推送注册失败回调
- [backcolor=transparent] */
- [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]void[backcolor=transparent])[backcolor=transparent]application[backcolor=transparent]:([backcolor=transparent]UIApplication[backcolor=transparent] [backcolor=transparent]*)[backcolor=transparent]application didFailToRegisterForRemoteNotificationsWithError[backcolor=transparent]:([backcolor=transparent]NSError[backcolor=transparent] [backcolor=transparent]*)[backcolor=transparent]error [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"didFailToRegisterForRemoteNotificationsWithError %@"[backcolor=transparent],[backcolor=transparent] error[backcolor=transparent]);
- [backcolor=transparent]}
- [backcolor=transparent]/**
- [backcolor=transparent] * 注册推送消息到来监听
- [backcolor=transparent] */
- [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]void[backcolor=transparent])[backcolor=transparent]registerMessageReceive [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent][[[backcolor=transparent]NSNotificationCenter[backcolor=transparent] defaultCenter[backcolor=transparent]][backcolor=transparent] addObserver[backcolor=transparent]:[backcolor=transparent]self[backcolor=transparent] selector[backcolor=transparent]:[backcolor=transparent]@selector[backcolor=transparent]([backcolor=transparent]onMessageReceived[backcolor=transparent]:)[backcolor=transparent] name[backcolor=transparent]:@[backcolor=transparent]"CCPDidReceiveMessageNotification"[backcolor=transparent] [backcolor=transparent]object[backcolor=transparent]:[backcolor=transparent]nil[backcolor=transparent]];
- [backcolor=transparent]}
- [backcolor=transparent]/**
- [backcolor=transparent] * 处理到来推送消息
- [backcolor=transparent] *
- [backcolor=transparent] * @param notification
- [backcolor=transparent] */
- [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]void[backcolor=transparent])[backcolor=transparent]onMessageReceived[backcolor=transparent]:([backcolor=transparent]NSNotification[backcolor=transparent] [backcolor=transparent]*)[backcolor=transparent]notification [backcolor=transparent]{
- [backcolor=transparent] [backcolor=transparent]CCPSysMessage[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]message [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent][[backcolor=transparent]notification [backcolor=transparent]object[backcolor=transparent]];
- [backcolor=transparent] [backcolor=transparent]NSString[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]title [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent][[[backcolor=transparent]NSString[backcolor=transparent] alloc[backcolor=transparent]][backcolor=transparent] initWithData[backcolor=transparent]:[backcolor=transparent]message[backcolor=transparent].[backcolor=transparent]title encoding[backcolor=transparent]:[backcolor=transparent]NSUTF8StringEncoding[backcolor=transparent]];
- [backcolor=transparent] [backcolor=transparent]NSString[backcolor=transparent] [backcolor=transparent]*[backcolor=transparent]body [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent][[[backcolor=transparent]NSString[backcolor=transparent] alloc[backcolor=transparent]][backcolor=transparent] initWithData[backcolor=transparent]:[backcolor=transparent]message[backcolor=transparent].[backcolor=transparent]body encoding[backcolor=transparent]:[backcolor=transparent]NSUTF8StringEncoding[backcolor=transparent]];
- [backcolor=transparent] [backcolor=transparent]NSLog[backcolor=transparent](@[backcolor=transparent]"Receive message title: %@, content: %@."[backcolor=transparent],[backcolor=transparent] title[backcolor=transparent],[backcolor=transparent] body[backcolor=transparent]);
- [backcolor=transparent]}