web-dev-qa-db-ja.com

IOSアプリケーションが閉じられたときの通知

サーバーから通知を送信するときにリモート通知を送信するiOSアプリケーションがありますcontent -available = 1およびsound = ""オンの場合IOS私が使用しているデバイス

applicaiton(didReceiveRemoteNotification:fetchCompletionHandler :)

バックグラウンドでアプリがこのメソッドに到達するのを確認しましたが、アプリを閉じるとこのメソッドは呼び出されませんが、アプリケーションを閉じると呼び出されません

applicaiton(didReceiveRemoteNotification:fetchCompletionHandler :)

このメソッドの私のハンドラーは

        let userInfoDic = userInfo as NSDictionary as? [String: Any]
        let cato = userInfoDic?["cato"] as? String
if cato == "message" {
            let state: UIApplicationState = UIApplication.shared.applicationState
            if state == .active{
                print("Application is Active Socket IO will Handle This")
            }else{
                let apnMessage = userInfoDic?["apnMessage"] as? [String: Any]
                if (apnMessage == nil){
                    print("Error Fetching Message")
                }else{
                let count = UserDefaults.standard.integer(forKey:"TotalUnredMessage")

                    DispatchQueue.main.async {
                        UIApplication.shared.applicationIconBadgeNumber = count + 1
                    }
                    UserDefaults.standard.set(count, forKey: "TotalUnredMessage")
          }
}

したがって、アプリケーションが閉じている場合でもこのメソッドを実行するには、何を変更する必要がありますか

ありがとう

5

didReceiveRemoteNotificationアプリケーションが閉じられたときにメソッドは呼び出されません。

ただし、appdelegateのdidFinishWithLaunchOptionsメソッドで、アプリケーションが通知から起動されたかどうかを確認するためにlaunchOptionsをチェックし、それに応じてタスクを実行できます。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {

     if launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] != nil {
    // Do your task here
    }

}
6
Prakash Shaiva

構成で、リモート通知でアプリをウェイクアップする必要があることを指定する必要があります。このコメントを確認してください: https://stackoverflow.com/a/29231395/2732896

0
DoN1cK