详细解答可以参考官方帮助文档
completionHandler
可实现前台通知弹出,具体参考iOS 10通知适配 - 4.4.2)。检查手机端的推送配置,可以通过如下的方法来判断手机端是否能从苹果APNs服务端拿到Device Token。
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"didFailToRegisterForRemoteNotificationsWithError %@", error);
}
如果配置不对,就会报错。
unregisterForRemoteNotifications
接口(远程推送注销接口),设备调用该接口后无法收到苹果APNs推送通知。iOS的通知推送,走的是苹果官方的APNs通道,本身区分开发环境
和生产环境
。
开发时安装到手机的App,只能以开发模式
推送,使用APNs Sandbox
推送证书。
正式发布后,通过App Store安装的App,只能以生产模式
推送,用APNs Production
推送证书;生产环境通知测试,参考移动推送iOS SDK: Ad Hoc App如何进行生产环境推送通知测试?
如果推送模式选错,或者推送证书传错,苹果的APNs服务端就会认为该Device Token无效,无法推送通知。
OpenAPI的推送高级接口,可以通过设置iOSApnsEnv
参数选择推送模式。
Xcode 8开始,会出现一个推送开关,请保证它是处于打开状态
若没有打开推送开关,会触发deviceToken注册错误回调:didFailToRegisterForRemoteNotificationsWithError:
,提示下述错误:
Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串" UserInfo=0x1740741c0 {NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。