PushNotifications 委托未触发

PushNotifications delegate not triggered

我已经看到很多类似的问题,阅读并尝试了提出的多种解决方案,但 none 似乎对我有用。

我无法调用 RemoteNotifications 的委托。 "DidRegisterForRemoteNotificationWithDeviceToken" 或 "didFailToRegisterForRemoteNotificationsWithError"。

我正在 运行 iOS9 设备上测试并使用 XCode7 和 Swift。还在开发中,仅在本地设备上进行测试。

这是我目前的代码、情况和我到目前为止所做的尝试:

   func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    if #available(iOS 8.0, *) {
        let types: UIUserNotificationType = [.Alert, .Badge, .Sound]
        let settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil)

        application.registerUserNotificationSettings(settings)
        application.registerForRemoteNotifications()
    } else {
        // Fallback on earlier versions
        UIApplication.sharedApplication().registerForRemoteNotificationTypes([.Alert, .Badge, .Sound])
    }
    return true
}

func application(application: UIApplication, DidRegisterForRemoteNotificationWithDeviceToken deviceToken: NSData)
{
    print("Registration successful")
}

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    print("Failed to get token; error: \(error)")
}

我已经多次检查并重新生成所有证书和配置文件。确保 "Push notifications" 处于活动状态并且它们已链接到正确的 AppID 和 BundleID。

我还检查了我是否正在构建 运行 正确的供应配置文件,无论是在项目中还是在目标功能中(在我的例子中是开发功能) 如果 "aps-environment" 被列出(并且它是)

,我检查了所说的配置文件

应用程序首次启动时,系统会提示用户选择接受应用程序通知,但仍未调用注册委托。

我尽量包含所有可能的信息,而且我尝试了几乎所有的信息,所以我希望任何人都能帮助我。即使我错过了一些愚蠢的东西 :p

谢谢!

[编辑 1] 在使用 Apple 在 TechnicalNote 2265 上提供的 APS 配置文件进行一些记录后,我设法获得了更多信息:

2015-09-23 10:42:46 +0200 apsd[102]: : 已连接快递43-courier.push.apple.com (17.110.225.83)
连接:onInterface:WWAN
2015-09-23 10:42:46 +0200 apsd[102]:copyTokenForDomain push.apple.com(空)
2015-09-23 10:42:46 +0200 apsd[102]: : 发送带有令牌的连接消息 '<76c23fe9 639be5c1 dfb5fa3a 5d6af6c9 6f6b9fb2 1e841d01 e3f05b02 1222960a>' onInterface: WWAN with activeInterval 0
2015 年 9 月 23 日 10:42:47 +0200 apsd[102]::收到未完成的数据:<08000000 1a010001 00040002 14000800 023c0005 00020003 06000400 000001>(长度 31)onInterface:WWAN。在 0 个接口上连接。
2015-09-23 10:42:47 +0200 apsd[102]: : 流处理:完成是,无效否,解析长度 31,参数 { APS 协议命令 = 8; APS 协议连接响应 = 0; APS 协议双通道支持 = 1; APSProtocolLargeMes​​sageSize = 15360; APSProtocolMessageSize = 5120; }
2015-09-23 10:42:47 +0200 apsd[102]: : 默认用户的连接响应?是
2015-09-23 10:42:47 +0200 apsd[102]:要求将 isConnected=NO 更改为 YES
2015-09-23 10:42:47 +0200 apsd[102]::设置双通道支持:是
2015-09-23 10:42:47 +0200 apsd[102]: 服务器支持双模式 YES 旧值 YES
2015-09-23 10:42:47 +0200 apsd[102]: : 收到连接响应正常 - 在 1 个接口上连接。

[编辑 2] 固定的。我只是缺少代表名称中的 's'。感觉很傻但至少现在有效

据我所知,我们无法在模拟器中本地订阅 iOS 通知。不过,如果您需要将其作为应用程序的一部分进行测试,您可以查看类似以下内容:https://github.com/acoomans/SimulatorRemoteNotifications

能否请您尝试以下操作,看看是否适合您:

  1. 请确保您没有使用通配符包标识符(以 * 结尾)。
  2. 请尝试为您的应用程序重置设备以启用推送。 (见下文参考)
  3. 我个人在特定设备上遇到过这种情况。所以,请尝试使用不同的设备,看看问题是否仍然存在。
  4. 尝试不同的网络,最好打开没有任何防火墙和端口阻塞的 DSL。

If you want to simulate a first-time run of your app, you can leave the app uninstalled for a day. You can achieve the latter without actually waiting a day by setting the system clock forward a day or more, turning the device off completely, then turning the device back on.