如果用户没有打开通知

时间:2015-11-30 03:43:18

标签: ios swift push-notification payload onesignal

我目前正在使用 OneSignal 为我的应用提供通知服务。我真的需要帮助从 AppDelegate additionaldata (有效负载数据) >在 didFinishLunchingWithOption 里面,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
}
}

但是,我只能在用户点击通知时获取数据,或者从通知中心打开它。因此,如果用户在显示或不通过通知中心轻扫或点击时忽略该通知而没有点击,我该如何获得额外的数据?

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

2 个答案:

答案 0 :(得分:3)

您应该使用application(_:didReceiveRemoteNotification:fetchCompletionHandler:)

如果您启用了远程通知后台模式,即使应用未在前台运行,您的大多数通知也会被提供。唯一需要注意的是应用程序必须已经启动(因为通知被推送,用户已完成此操作)并且用户不必强制退出。

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

答案 1 :(得分:-1)

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

让data = launchOptions.objectForKey(UIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationUIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationKey)