2017-08-12 3 views
0

私はWhatsAppとまったく同じアプリを作ろうとしていますが、これまでの最大の制限は、ユーザーがしばらくしてからアプリケーションを再起動してConversation Viewに行くと、その間に送られた新しいMessageです。アプリケーションがバックグラウンド/一時停止中または終了中状態をサーバー(API)から回復する必要があり、これにより、新しいメッセージがConversation Viewに表示される可能性があります。アプリケーションがBackground/Suspended/Terminated状態になっている場合でも、CoreDataをServer APIと同期させておく方法はありますか?

どのように私は永久に達成することができますサーバのAPIを持つアプリケーションのを同期させますか?がいつでもダウンロードされているように見えないので、WhatsAppのようなアプリがこれを管理していると確信していますしばらくしてからアプリケーションを再オープンしますか?

このタイプの動作を模倣する正しい方法は何ですか?私は本当にこのような「高度な」同期を実行する方法を学びたいと思っています。どこから始めたらいいのか分かりません。再び、私の目標は、ユーザーがConversation Viewなどを再入力したときに新しいMessageのサーバダウンロードを避けることです(これは悪いUXなので)

ありがとうございます!

+0

あなたが本当に**完璧な**の同期を取得することはできません。あなたは近づくことができます。プッシュ通知を使用して、取得するメッセージがあることをアプリに知らせます。また、*いくつかのバックグラウンド処理を行ってアップデートを得ることもできます。 – ryantxr

+0

ええ、私はそれが完璧ではないことを認識し始めています。しかし、彼らが属しているViewControllerに入ると、あなたは 'some'データ(Messages)をダウンロードすべきですか?またはAppDelegateコールバックのような前にいつか実行する必要がありますか? – jlstr

+0

アプリをフォアグラウンドにすると、すべてのスレッドのすべてのメッセージを読み込むことができます。その後、会話に入るときにすでに読み込まれています。 – ryantxr

答えて

1

アプリにプッシュ通知が必要です。これはにはこのようなアプリのが必要です。

新しいメッセージがあることがわかったら、サーバーにプッシュ通知を送信します。これは、読み取るべきメッセージがあることをアプリに知らせる。この時点で、アプリはアプリアイコンのバッジを作成し、アラートをポップして通知画面に表示することができます。ユーザーは通知の表示方法を制御します。ここでの通知に関する

詳細: https://developer.apple.com/notifications/

それが通知を取得したときにアプリがすべてのメッセージを読み込むことができます。

iOSアプリはバックグラウンド・プロセスのためのいくつかの限られた選択肢を持っています:https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

+0

こんにちは、これは私が探しているのとまったく同じようです。 「プッシュ通知を使用してダウンロードを開始する」および「少量のコンテンツを魅力的に取り出す」のセクションは有望です。万が一、周りにスウィフトサンプルがありますか?ありがとうございました。 – jlstr

+1

申し訳ありません。私はこれに役立つコードはありません。プッシュ通知の多くの例があります。いくつかのコードを書いてください。立ち往生した場合は、新しい質問を開きます。 – ryantxr

関連する問題