开发者社区> 问答> 正文

【移动推送】iOS端推送通知失败的排查步骤是什么?

已解决

【移动推送】iOS端推送通知失败的排查步骤是什么?

展开
收起
EMAS支持组 2022-09-15 17:22:32 532 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    检查手机端

    检查App是否被授权允许接收通知。

    推送通知时,App需处于后台或关闭状态,因为在iOS 10以下系统中,如果App在前台,不会收到弹窗和通知中心的通知。iOS 10及以上系统前台通知触发回调处理完成后,调用completionHandler可实现前台通知弹窗,详情请参见iOS 10通知适配

    检查手机端的推送配置,可以通过如下的方法来判断手机端是否能从苹果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推送证书。

    生产环境通知测试,请参见Ad Hoc App如何进行生产环境推送通知测试

    如果推送模式选错,或者推送证书传错,苹果的APNs服务端就会认为该Device Token无效,无法推送通知。常见控制台排查错误的推送状态为失败,而失败原因的原因为apns token失效。

    OpenAPI的推送高级接口中,服务端可以通过设置 iOSApnsEnv 参数设置推送模式。注意“iOS”的i要小写 ,否则默认推送的是生产模式。

    检查IDE设置

    Xcode 8开始,会出现一个推送开关,请保证它是处于打开状态。 image.png 若没有打开推送开关,会触发deviceToken注册错误回调(didFailToRegisterForRemoteNotificationsWithError:),提示下述错误信息:

    Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的授权字符串" UserInfo=0x1740741c0 {NSLocalizedDescription=未找到应用程序的“aps-environment”的授权字符串
    

    推送证书合法性校验

    在推送控制台检查推送证书是否在有效期内,证书配置请参见iOS推送证书设置

    也可以通过第三方工具快速测试您的APNs推送证书信息是否正确,详情请参见NWPusher

    设备关机

    设备关机后推送通知,苹果APNs只保留最后一条通知,因此在重新开机后,只能收到最后一条通知。


    更多官方信息

    EMAS官网介绍:https://www.aliyun.com/product/emas

    Devops:https://www.aliyun.com/product/emascrash/mobile_devops

    移动热修复:https://www.aliyun.com/product/hotfix

    移动测试:https://www.aliyun.com/activity/emas/mqcexpert

    移动推送:https://www.aliyun.com/product/cps

    HTTPDNS:https://www.aliyun.com/product/httpdns

    EMAS 控制台: https://emas.console.aliyun.com/products

    2022-09-16 12:13:08
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
基于阿里巴巴以及合作伙伴的最佳实践,围绕大前端、云原生领域的相关技术热点(小程序、Serverless、应用中间件、低代码、DevOps)展开行业探讨,与开发者一起探寻云原生时代应用研发的新范式。
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载