我已经看过很多关于它的类似问题,阅读并尝试了多个解决方案,但似乎没有一个对我有用。
我无法设置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;
APSProtocolLargeMessageSize = 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] 固定。我只是错过了一个'在委托名称中。感觉愚蠢的方式,但至少它现在有效
答案 0 :(得分:0)
您可以尝试一下,看看是否适合您:
如果您想模拟首次运行的应用,可以离开 该应用程序已卸载一天。没有你可以实现后者 实际上等一天通过设置系统时钟一天或 更多,完全关闭设备,然后关闭设备 上。
答案 1 :(得分:-2)
据我所知,我们无法在模拟器中原生订阅iOS通知。如果您需要在应用中对此进行测试,可以查看以下内容:https://github.com/acoomans/SimulatorRemoteNotifications