PushNotifications委托未触发

时间:2015-09-22 15:00:02

标签: ios swift push-notification

我已经看过很多关于它的类似问题,阅读并尝试了多个解决方案,但似乎没有一个对我有用。

我无法设置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)")
}

我已多次检查并重新生成所有证书和配置文件。确保"推送通知"处于活动状态,并且它们与正确的AppID和BundleID相关联。

我还检查了我是否在项目和目标功能(在我的情况下是开发项目)中使用正确的Provisioning Profile构建和运行 如果" 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(null)
2015-09-23 10:42:46 +0200 apsd [102] ::用令牌发送连接消息< 76c23fe9 639be5c1 dfb5fa3a 5d6af6c9 6f6b9fb2 1e841d01 e3f05b02 1222960a>' onInterface:WWAN with activeInterval 0
2015-09-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,参数{     APSProtocolCommand = 8;     APSProtocolConnectedResponse = 0;     APSProtocolDualChannelSupport = 1;     APSProtocolLargeMes​​sageSize = 15360;     APSProtocolMessageSize = 5120; }
2015-09-23 10:42:47 +0200 apsd [102] ::连接响应默认用户? YES
2015-09-23 10:42:47 +0200 apsd [102]:要求将isConnected = NO改为YES
2015-09-23 10:42:47 +0200 apsd [102] ::设置dualChannelSupport:是
2015-09-23 10:42:47 +0200 apsd [102]:服务器支持双模式YES旧值YES
2015-09-23 10:42:47 +0200 apsd [102]:收到连接响应OK - 连接1个接口。

[编辑2] 固定。我只是错过了一个'在委托名称中。感觉愚蠢的方式,但至少它现在有效

2 个答案:

答案 0 :(得分:0)

您可以尝试一下,看看是否适合您:

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

    如果您想模拟首次运行的应用,可以离开   该应用程序已卸载一天。没有你可以实现后者   实际上等一天通过设置系统时钟一天或   更多,完全关闭设备,然后关闭设备   上。

答案 1 :(得分:-2)

据我所知,我们无法在模拟器中原生订阅iOS通知。如果您需要在应用中对此进行测试,可以查看以下内容:https://github.com/acoomans/SimulatorRemoteNotifications