2016-03-30 12 views
1

これは、彼らが私のiOSアプリはDIN受信されたときにプッシュ通知を処理するために、私のdidReceiveRemoteNotification方法です:Swift:アプリの実行中にプッシュ通知を保存する方法

func showNotificationDetails(userInfo: [NSObject : AnyObject], application:UIApplication) { 
    print("showNotificationDetails") 
    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    let notificationController = storyboard.instantiateViewControllerWithIdentifier("DynamicEventsViewController") as! DynamicEventsViewController 
    notificationController.isLoadedFromNotification = true 
    notificationController.eventTitle = userInfo["aps"]!["alert"] as! String 
    notificationController.eventDescription = userInfo["aps"]!["message"] as! String 
    notificationController.isLoadedFromNotification = true 

    if let tabBarController = self.window?.rootViewController { 
     tabBarController.presentViewController(notificationController, animated: true, completion: nil) 
    } 

    application.applicationIconBadgeNumber -= 1 
    //application.cancelAllLocalNotifications() 

} 


func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 

    let state:UIApplicationState = application.applicationState 
    if (state == UIApplicationState.Inactive || state == UIApplicationState.Background) { 
     self.showNotificationDetails(userInfo, application: application) 
    } 
} 

問題は、アプリケーションが実行されているとの通知が届いた場合は、それが格納されていないと、それが削除されていることですユーザは後でそれを見ることができない。ユーザーがそれを読むまでは、どのようにして通知を維持するのが適切な方法でどうすればよいですか? Divyeshが提案のように

+0

アプリは、彼はそれが正しくないと言うので、それは私が行っていたまさにですが、私の上司は私がいることをしたくはありません –

+0

フォアグラウンドであるときは、通知メッセージで警告を表示することができます! – user1576208

+2

は通知データを保存するだけで、ローカル通知を使用することができます。アプリがバックグラウンドに入ったときに、保存された通知が利用可能かどうかを確認してからローカル通知を表示する –

答えて

0

まず、NSUserDefaultsでこれを保管しないでください。それは明らかに、名前とドキュメントのすばやく読んだことに基づいて、クラスが何であるかはわかりません。

第二に、あなたの上司は間違っている、とあなたは彼にそれを説明できるようにする必要があります。プッシュ通知に関するドキュメントは、各状態で何が起こるかを明確に示しています。アプリがフォアグラウンドにあり、通知が届いていて、フラグがユーザーに警告が必要だと表示された場合は、警告を表示するはずです。あなたが実際にそれらを保存したい場合は

最後に、あなたはコアデータまたはplistのか、そのようなものを使用する必要があります。通知は実際のデータを保持するものではないことを覚えておいてください。

+0

に保存することができます。私が見つけた解決策は、アプリケーションがアクティブなときに到着した通知がグローバル配列に格納されるということです。その後、アプリがバックグラウンド状態(任意のビューコントローラから)に入ると、その通知はローカル通知としてスケジュールされ、ユーザはバナーアラートを見ることができます。とにかく、WhatsappやiMessageのようなアプリは、新しいメッセージが届いたときにアプリが動いていても、バナーアラートを表示します。彼らはどのようにそれをすることができますか?彼らは第3パートのフレームワークを使用していますか? – user1576208

関連する問題