1

プッシュ通知とのやりとりを通じてアプリケーションをフォアグラウンドにするか、ユーザーがアプリをクリックして手動でフォアグラウンドにするかどうかを知る必要があります。アプリがバックグラウンドスウィフトから開かれているかどうかを検出するiOS

手動背景からアプリを開く場合「applicationWillEnterForeground」が呼び出されます。 の場合、プッシュ通知によってバックグラウンドからアプリを開くと、「applicationWillEnterForeground」が呼び出され、「didReceiveRemoteNotification」が続きます。

私はpushまたはnot(統計情報、ユーザーがプッシュメッセージとやりとりするため)によって開かれたと確信しているときはいつでも、私のバックエンドへのアプリケーション代理人の内部でアラモファイア要求を行いたいと思います。

リストアップしたすべてのメソッドの後に呼び出されるメソッドはありますか?もしそうなら、私はその場所でそれがプッシュであるかどうかをチェックして、それを遠ざけることができます。または、これに取り組むための良い方法がありますか?

答えて

2

アプリがバックグラウンドのときは、"didReceiveRemoteNotification"で通知を処理できます。

それがすべてで実行されていなかったと、ユーザーが通知バナーをクリックして、それを開始し、あなたが起動オプションをチェックする必要がある場合:この方法で

if let launchOptions = launchOptions { 
     if let notificationInfo = launchOptions[UIApplicationLaunchOptionsKey.remoteNotification] as? [AnyHashable : Any] { 
      // Handle notificationInfo 
     } 
    } 

「アプリケーション(_アプリケーション:のUIApplication、 didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey:Any]?) "AppDelegateのです。

func applicationDidBecomeActive(_ application: UIApplication) 

ここで私はそれがプッシュを通じて開かれたりされなかった場合を把握する前に

didReceiveRemoteNotification 

を使用した、私のバックエンドにリクエストを発射することができます:その後と呼ばれる何かを見つけ

+0

よく見る。私は残りのAPIを持っています。私は電話をする必要があります。 OpenedViaPush()またはOpenedManually()。私が既に使用しているコードは、アプリケーションのコールドスタートをチェックするために使用しています。 今、アプリはバックグラウンドにあり、再開されました。 実際にdidReceiveRemoteNotificationを確認できます。しかし、手動でバックグラウンドから開かれたかどうかを追跡したい場合は、2つのメソッドが呼び出されるため、動作しません。 applicationWillEnterForegroundを実行してからdidReceiveRemoteNotificationを呼び出します。 –

+0

アプリケーションがバックグラウンドにあったシナリオでは、applicationWillEnterForegroundメソッドを気にする必要はありません。 didReceiveRemoteNotificationで必要なものを実装するだけです。たぶん[this thread](http://stackoverflow.com/questions/5056689/didreceiveremotenotification-when-in-background)が参考になるでしょう。 – user3581248

+0

あなたはリモート通知を受け取っていないが、単にバックグラウンドからアプリを開いたのであれば? didReceiveRemoteNotificationは、通知を受け取ったときにのみ呼び出されます。私は両方を行う方法が必要です。 –

0

関連する問題