2

我目前正在使用OneSignal为我的应用程序提供通知服务。我真的需要帮助来访问来自AppDelegate内部的通知附加数据(有效负载数据),其中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
}
}

但是,如果用户在出现时单击通知或从通知中心打开它,我只能获取数据。因此,如果用户忽略该通知而不在出现时点击或没有从通知中心滑动或点击,我如何获取其他数据?

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

4

2 回答 2

3

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

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

Apple 文档中有关该特定方法的更多信息。或者在“本地和远程通知编程指南的”通知处理章节

于 2015-11-30T04:51:12.150 回答
-1

您可以通过以下方法提取完成完成Launching中的所有有效负载..

让数据 = launchOptions.objectForKey(UIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationUIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationKey)

于 2015-11-30T04:30:53.893 回答