我注意到某些设备不会为推送通知生成设备令牌。我一直在使用以下代码生成设备令牌并实现了
didRegisterForRemoteNotificationsWithDeviceToken
方法
var types: UIUserNotificationType = UIUserNotificationType.Badge |
UIUserNotificationType.Alert |
UIUserNotificationType.Sound
var settings: UIUserNotificationSettings = UIUserNotificationSettings( forTypes: types, categories: nil )
application.registerUserNotificationSettings( settings )
application.registerForRemoteNotifications()
我获得了某些设备的设备令牌。但是我认为由于缺乏互联网连接而没有为某些设备生成设备令牌。可以肯定的是,我关闭了互联网连接,并确保这是我的问题,但它成功生成令牌?
据我所知,我的应用程序使用苹果服务器请求设备令牌......
为什么会发生这种情况。设备令牌是如何生成的?
我真的不需要互联网连接来生成设备令牌
答案 0 :(得分:3)
必须注册设备进行远程连接
var types: UIUserNotificationType = UIUserNotificationType.Badge |
UIUserNotificationType.Alert |
UIUserNotificationType.Sound
var settings: UIUserNotificationSettings = UIUserNotificationSettings( forTypes: types, categories: nil )
application.registerUserNotificationSettings( settings )
application.registerForRemoteNotifications()
以上代码仅在您拥有互联网时才有效
当您在此功能didRegisterForRemoteNotificationsWithDeviceToken
将其存储在NSUserDefault中,如果没有从NSUserDefault获取设备令牌,请立即检查您是否具有上述方法的互联网连接。 要检查internetConnection,您可以使用Reachability类从https://github.com/ashleymills/Reachability.swift
获取它答案 1 :(得分:1)
如果您的应用程序先前已注册,则调用 ''<== assuming cell contains value 1
monthSel.SelectByText "10" 'or monthSel.SelectByText ActiveSheet.Cells(2,1).value
daySel.SelectByValue "29"
yearSel.SelectByValue 2019 'different ways of doing same thing shown
会导致操作系统将设备令牌立即传递给委托,而不会产生额外的开销。
否则,更改WIFI
希望有帮助。
答案 2 :(得分:0)
确保您没有意外点击“不允许”#39;显示推送通知权限对话框时。如果是这种情况,您必须转到设置并手动为您的应用启用推送通知,然后您将获得设备令牌。
对于互联网连接问题:请求设备令牌确实需要互联网连接才能将您的设备注册到APNS。但是,一旦您注册了您的设备,其他所有后续呼叫都将为您提供设备令牌而无需互联网连接,因为它无法访问APNS服务器:
你可以看看它:
通过请求设备令牌并将其传递给提供者 您的应用程序启动时,您可以帮助确保提供程序 拥有设备的当前令牌。如果用户将备份还原到 设备或计算机,而不是为其创建备份的设备或计算机 (例如,用户将数据迁移到新设备或计算机),他 或者她必须至少启动一次申请才能收到 再次通知。如果用户将备份数据还原到新设备 或计算机,或重新安装操作系统,设备令牌 变化。此外,永远不要缓存设备令牌并将其提供给您 供应商;始终在需要时从系统获取令牌。 如果您的申请先前已注册,请致电 registerForRemoteNotificationTypes:操作系统中的结果 将设备令牌立即传递给代理人而不会产生任何影响 额外的开销。
答案 3 :(得分:0)
添加方法:
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError)
{
print("application:didFailToRegisterForRemoteNotificationsWithError: %@", error)
}
所以你可以找出错误是什么。我已经遇到了类似的问题。