Yar*_*evi 9 xcode apple-push-notifications ios swift
作为关于推送通知状态的苹果官方信息页面:
"设备令牌可以更改,因此您的应用每次启动时都需要重新注册."
我试图通过"每次启动"来理解它们的含义.
这是否意味着我必须在AppDelegate中调用它,在didFinishLaunchingWithOptions()中如下所示:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.registerForRemoteNotifications()
return true
}
Run Code Online (Sandbox Code Playgroud)
将此代码放在此处将导致它在每次用户打开应用程序时执行,如果用户在应用程序之间进行多任务处理(在它们之间来回切换),则可能每分钟执行多次.
由于调用注册方法会向APNS调用HTTP请求,因此存在临时禁止的风险.
这些观察结果是否正确,或者我可以毫无畏惧地使用这样的寄存器方法?
(我正在使用带有Swift的xcode 6.2)
didFinishLaunchingWithOptions每次用户切换到您的应用时都不会调用,因为您的应用通常仍在运行.你所描述的听起来更像是什么applicationDidBecomeActive.
NSLog在两种方法中添加一些s来说服自己这didFinishLaunchingWithOptions是正确的调用地点.registerForRemoteNotifications.
在最新的苹果文档中,没有关于何时/何处调用它的信息。我认为他们已经简化了 API。
\n从application(_:didRegisterForRemoteNotificationsWithDeviceToken:) 文档中:
\n\n通常,只有在调用 UIApplication 的 registerForRemoteNotifications() 方法后才会调用此方法,但 UIKit 可能会在其他极少数情况下调用它。例如,当用户从device\xe2\x80\x99s 备份数据以外的数据恢复设备后启动应用程序时,UIKit 会调用该方法。在这种特殊情况下,应用程序将\xe2\x80\x99不知道新设备\xe2\x80\x99s令牌,直到用户启动它。
\n
使用 Apple 的不同文档(可能已过时),配置远程通知支持,
\n\n\n如果您的应用程序运行时设备令牌发生变化,应用程序对象会
\napplication:didRegisterForRemoteNotificationsWithDeviceToken:再次调用委托方法来通知您该更改
因此,似乎您不再有责任频繁调用它(例如在启动时、在应用程序切换之间)。当您需要时只需调用一次deviceToken,application:didRegisterForRemoteNotificationsWithDeviceToken当它更新时您将被调用。我已经测试过我可以调用andregisterForRemoteNotifications的外部,它工作得很好。很难测试苹果是否会打电话。didFinishLaunchingWithOptionswillFinishLaunchingWithOptionsapplication:didRegisterForRemoteNotificationsWithDeviceToken
由于 Apple 文档过去已多次更改,因此我将复制 2021 年 8 月的以下讨论部分:
\n\n\n讨论
\n调用此方法以启动 Apple Push Notification 服务的注册过程。如果注册成功,\n应用程序将调用您的应用程序委托对象\xe2\x80\x99s\napplication:didRegisterForRemoteNotificationsWithDeviceToken: 方法\n并向其传递一个设备令牌。您应该将此令牌传递到\n用于为设备生成远程通知的服务器。如果\n注册失败,应用程序将调用其应用程序委托\xe2\x80\x99s\napplication:didFailToRegisterForRemoteNotificationsWithError: 方法\n。
\n如果您希望应用程序\xe2\x80\x99s 远程通知显示警报、播放\n声音或执行其他面向用户的操作,则必须使用\nUNUserNotificationCenter 的\nrequestAuthorizationWithOptions:completionHandler: 方法来请求\n授权才能执行此操作。如果您没有请求并接收\n应用交互的授权,系统会以静默方式向\n您的应用传递所有远程通知。
\n
| 归档时间: |
|
| 查看次数: |
2951 次 |
| 最近记录: |