3、:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions详细代码见demo,iOS10之前和之后的系统注册时所用的类是有区别的。4、处理远程通知注册成功或失败回调:-(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken发送deviceToken到我们自己的服务器或消息推送平台-(void)
4、application:(UIApplication*)applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError*)error详细代码见demo,在此方法中将deviceToken发送到我们自己的服务器或相应的推送平台。5、处理接收到远程推送消息,会回调下列方法中的某一个【5-1】-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions/启动App
5、时获取APNs的消息NSDictionary*userInfo=launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey;if(userInfo)/有消息推送【5-2】-(void)application:(UIApplication*)applicationdidReceiveRemoteNotification:(NSDictionary*)userInfofetchCompletionHandler:(void()(UIBackgroundFetchResult)compl
6、etionHandler/App在前台时立即调用,App在离线和后台时需要点击通知才会调用,直接点击应用进入App时是不会调用的,此方法中一定要调用completionHandler这个回调,告诉系统是否处理成功if(userInfo)completionHandler(UIBackgroundFetchResultNewData);elsecompletionHandler(UIBackgroundFetchResultNoData);/iOS10及以后:App在前台获取到通知【5-3】-(void)userNotificationCenter:(UNUserNotif
7、icationCenter*)centerwillPresentNotification:(UNNotification*)notificationwithCompletionHandler:(void()(UNNotificationPresentationOptions)completionHandlerNSLog("willPresentNotification:%",notification.request.content.userInfo);/根据APP需要,判断是否要提示用户Badge、Sound、AlertcompletionHandler
8、(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);/iOS10及以后:点击通知进入App时触发,在该方法内统计有效用户点击数【5-4】-(void)userNotificationCenter:(UNUserNotificationCenter*)centerdidReceiveNotificationResponse:(UNNotificationResponse*)responsewit
9、hCompletionHandler:(void()()completionHandlerNSLog("didReceiveNotification:%",response.notification.request.content.userInfo);/GTSdk:将收到的APNs信息传给个推统计GeTuiSdkhandleRemoteNotification:response.notification.request.content.userInfo;completionHandler();6、推送消息时,服务端和需前端要定义好json格式,下面的这些
10、key值是苹果官方所用的key值,也不是每一条消息都带所有key值,具体是情况而定,而且也可以自定义一些key值,但不要和官方的这些key值冲突,这些自定义的key值会作为消息推送的负载,如果负载超过规定大小时,APNs服务器会拒绝发送此消息(HTTP/2服务器负载是4KB,legacybinaryinterface服务器的负载是2KB)7、消息推送是也可以针对指定的用户来进行推送,这个需要在上报deviceToken的时候把相应的筛选信息userToken发送给我们的服务器,让服务器起来做区分,可以实现指定用户的消息推送,另外推送平台上还有更精细化的区分用户的方法。8、注意事项:
11、实现远程推送需要打开后台远程推送模式、开发者证书需要开启远程推送功能、配置APNs推送证书才能实现消息推送9、接入个推sdk时可以按照官网上的文档来接入,如果出现发不了透传消息时,需验证BundleIdentifer、推送证书、个推平台分配的appId、appKey、appSecret这些和程序中是否正确,程序中下面的方法是否调用:/*远程通知注册成功委托*/【9-1】-(void)application:(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData*)
12、deviceTokenNSString*token=deviceTokendescriptionstringByTrimmingCharactersInSet:NSCharacterSetcharacterSetWithCharactersInString:"<>"token=tokenstringByReplacingOccurrencesOfString:""withString:""NSLog("n>>>DeviceTokenSuccess:%nn"