如果用户未打开通知,如何获取位于 AppDelegate' didFinishLunchingWithOptions 的通知附加数据(payloadData)

How to get notification additionaldata(payloadData) that was at AppDelegate' didFinishLunchingWithOptions if the user didn't open the notification

我目前正在使用 OneSignal 为我的 app.I 提供通知服务 app.I 确实需要帮助来访问通知 additionaldata(payload数据)来自 AppDelegate inside didFinishLunchingWithOption where OneSignal API 可以这样给我。

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
var data : [NSObject : AnyObject]!

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    let oneSignal = OneSignal(launchOptions: launchOptions, appId: "48755d3d-abc0-4bac-8f71-095729bb3a65") { (message, additionalData, isActive) in
        NSLog("OneSignal Notification opened:\nMessage: %@", message)

        if additionalData != nil {
            NSLog("additionalData: %@", additionalData)
            self.data = additionalData
            print(self.data)
        }
    }
    oneSignal.enableInAppAlertNotification(true)
    return true
}
}

但是,如果用户在通知出现时点击通知或从通知中打开它,我只能获取数据center.So,如果用户忽略通知出现时没有点击或没有从通知中心滑动或点击,怎么办我得到了额外的数据?

实际上,我想在每次进入我的设备时将所有有效负载数据存储在领域数据库中,并根据该有效负载数据从我的服务器获取数据。

您可以通过以下方法提取 did finishLaunching 中的所有有效载荷..

让数据 = launchOptions.objectForKey(UIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationUIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationKey)

你应该使用 application(_:didReceiveRemoteNotification:fetchCompletionHandler:).

如果您启用了远程通知后台模式,即使应用程序不在前台 运行,您的大部分通知也会发送。唯一需要注意的是,应用程序必须已经启动(因为通知被推送,用户已经这样做了)并且它不能被用户强行退出。

Apple's docs 中有关该特定方法的更多信息。 或者在 "Local and Remote Notification Programming Guide's" 通知处理章节