Как получить дополнительные данные уведомления (payloadData), которые были в AppDelegate' didFinishLunchingWithOptions, если пользователь не открыл уведомление
В настоящее время я использую OneSignal для службы уведомлений в моем приложении. Мне действительно нужна помощь в получении доступа к дополнительным данным уведомления (данным полезной нагрузки) из AppDelegate внутри 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
}
}
но я могу получить данные только в том случае, если пользователь щелкнет уведомление, когда появится или откроет его из центра уведомлений. Итак, если пользователь пренебрегает этим уведомлением, не нажимая при появлении, или не проводя пальцем или не нажимая в центре уведомлений, как мне получить дополнительные данные?
На самом деле, я хочу хранить все данные полезной нагрузки каждый раз, когда они поступают на мое устройство в базе данных области, и извлекать данные с моего сервера в соответствии с этими данными полезной нагрузки.
2 ответа
Вы должны использовать application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
,
Если вы включили фоновый режим удаленных уведомлений, большинство ваших уведомлений будут доставлены, даже если приложение не работает на переднем плане. Единственное предостережение в том, что приложение должно быть запущено (так как уведомления отправляются, пользователь сделал это), и оно не должно быть принудительно завершено пользователем.
Больше информации в документации Apple об этом конкретном методе. Или в главе " Руководство по программированию локальных и удаленных уведомлений".
Вы можете извлечь все полезные данные в did finishLaunching следующим способом.
Let data = launchOptions.objectForKey (UIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationUIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationKey)