Как получить дополнительные данные уведомления (payloadData), которые были в AppDelegate 'didFinishLunchingWithOptions, если пользователь не открывал уведомление

В настоящее время я использую OneSignal для службы уведомлений для своего приложения. Мне действительно нужна помощь с доступом к дополнительным данным (данным полезной нагрузки) уведомления от AppDelegate внутри < strong> didFinishLunchingWithOption, где API OneSignal может дать мне подобное.

@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
}
}

но я могу получить данные только в том случае, если пользователь нажимает уведомление при появлении или открывает его из центра уведомлений. Итак, если пользователь игнорирует это уведомление, не нажимая, когда оно появляется, или не прокручивая или не нажимая из центра уведомлений, как мне получить дополнительные данные?

Фактически, я хочу сохранять все данные полезной нагрузки каждый раз, когда они поступают на мое устройство в базе данных области, и получать данные с моего сервера в соответствии с этими данными полезной нагрузки.


person Thiha Aung    schedule 30.11.2015    source источник


Ответы (2)


Вы должны использовать application(_:didReceiveRemoteNotification:fetchCompletionHandler:).

Если вы включили фоновый режим удаленных уведомлений, большинство ваших уведомлений будет доставлено, даже если приложение не запущено на переднем плане. Единственное предостережение заключается в том, что приложение должно быть запущено (поскольку уведомления отправляются, пользователь сделал это), и он не должен был быть принудительно завершен пользователем.

Подробнее см. документы Apple об этом конкретном методе. Или в "Руководство по программированию локальных и удаленных уведомлений", глава, посвященная обработке уведомлений

person juhan_h    schedule 30.11.2015
comment
Спасибо, но мне нужно задать вам вопрос. Приложение работает в фоновом режиме. Когда приходит уведомление, пользователь игнорирует его. Итак, как мы можем получить данные полезной нагрузки? Я видел, что мы можем получать данные уведомления только тогда, когда пользователь проведите по уведомлению в центре уведомлений или нажмите на предупреждение. - person Thiha Aung; 30.11.2015

Вы можете извлечь всю полезную нагрузку в did finishLaunching следующим методом ..

Пусть data = launchOptions.objectForKey (UIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationUIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationKey)

person Abhishek    schedule 30.11.2015
comment
Спасибо за ответ. Я могу получить данные только в том случае, если пользователь нажал на уведомление, но не могу, если пользователь пренебрегает уведомлениями или не нажимает на отправленное уведомление. - person Thiha Aung; 30.11.2015