iOS端推送通知收不到的排查步骤

iOS端推送通知收不到的排查步骤及其解决方法

概述

本文主要介绍iOS端推送通知收不到的排查步骤及其解决方法。

准备工作

  • 已开通EMAS服务并创建项目和应用,具体操作请参见:移动研发平台EMAS > 快速入门

  • 已经按照《iOS SDK集成》完成了移动推送SDK的接入。

  • 已经按照《APNs鉴权配置》完成了iOS推送证书的配置。

iOS推送通知收不到的可能原因

  • 设备过期/未开启通知权限/应用在前台/未获取deviceToken

  • 用错推送环境【常见

  • 推送参数错误

  • Xcode 推送开关关闭

  • 推送证书过期或失效

  • 设备关机

检查手机端

  • 通过EMAS控制台排查工具查看设备有效性(设备从最后一次活跃时间开始90天内没活跃过就会被删除),以及设备基本信息 如:是否注册apns token、 推送开关状态 等。

    image

  • 推送通知时,App需处于后台或关闭状态。

    • iOS 10以下系统中,如果App在前台,不会收到弹窗和通知中心的通知。

    • iOS 10及以上系统前台通知触发回调处理完成后,调用completionHandler可实现前台通知弹窗,详情请参见iOS10通知适配

  • 检查手机端的推送配置,可以通过手机端是否能从苹果APNs服务端拿到Device Token来判断。

    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
    {
        NSLog(@"didFailToRegisterForRemoteNotificationsWithError %@", error);
    }
  • 检查代码中是否有调用unregisterForRemoteNotifications接口(远程推送注销接口),设备调用该接口后,无法收到苹果APNs推送的通知。

检查推送环境

APNs 推送通知环境

苹果APNs通道区分开发环境和生产环境

  1. 开发环境(Sandbox)

    1. 使用场景:适用于开发和测试阶段。

    2. App安装途径:通过Xcode直接安装到设备。

    3. 推送证书:使用Sandbox推送证书。

  2. 生产环境(Production)

    1. 使用场景:适用于正式发布和Ad Hoc测试。

    2. App安装途径:通过App Store安装,或者通过TestFlight安装。

    3. 推送证书:生产推送证书。

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

常见错误

  1. BadDeviceToken:如果推送环境选错,或者推送证书传错,苹果的APNs服务端就会认为该Device Token无效,无法推送通知。常见控制台排查错误的推送状态为失败,失败原因为BadDeviceToken,请检查安装包并使用正确的推送环境。

  2. iOSApnsEnv:OpenAPIPush - 高级推送中,服务端可以通过设置 iOSApnsEnv 参数设置推送环境。

    重要

    注意“iOSApnsEnv”的i要小写 ,否则参数无效。推送环境默认是生产环境。

检查推送参数

  1. iOSInterruptionLevel:iOS15新增参数,如果设置为passive系统在不点灯、不播放声音的情况下将通知添加到通知列表中。此时容易感知不到通知的送达。如无必要,请设置iOSInterruptionLevel="active"。

  2. 检查设备是否绑定:在使用别名、账号、标签进行推送时,容易出现测试设备不在别名、账号、标签设备列表中的情况,可通过OpenApi查询测试设备的是否绑定在推送Target中。

检查IDE设置

  • Xcode 8开始,会出现一个推送开关,请保证它是处于打开状态。

  • 若没有打开推送开关,会触发deviceToken注册错误回调(didFailToRegisterForRemoteNotificationsWithError:),提示下述错误信息:

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

检查推送证书合法性

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

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

设备关机

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

适用于

  • 移动推送