2

私は現在、アプリへの通知サービスにOneSignalを使用しています。OneSignal API がこのように提供できるdidFinishLunchingWithOption内のAppDelegateから通知の追加データ (ペイロード データ)にアクセスするには、本当に助けが必要です。

@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

次のメソッドで、did finishLaunching のすべてのペイロードを抽出できます。

data = launchOptions.objectForKey(UIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationUIApplicationLaunchOptionsUIApplicationLaunchOptionsRemoteNotificationKey) を設定します。

于 2015-11-30T04:30:53.893 に答える