web-dev-qa-db-ja.com

OSが30秒でアプリをシャットダウンすることを考慮して、WhatsappのWebバージョンはiOSデバイスでどのように機能しますか?

わからない人のために、 https://web.whatsapp.com/ にアクセスし、QRコードを交換してWhatsappチャットを同期し、Web拡張機能を介してチャットすることができますアプリの。

彼らがどのように最初のハンドシェイクを持っているか(whatsappサーバーと通信している可能性があります)、またはチャットのためにデータを非常に高速に同期する方法(デバイスからクライアントに直接Openソケットを使用している可能性があります)には興味がありません。

iOSのバックグラウンドでアプリがどのように機能するかに興味があります。バックグラウンドIntent Serviceを実行するAFAIKは非常に簡単です。ただし、iOSではありません。 iOSでは、アプリが正常にシャットダウンされてから最大30秒しか許可されません。

1)アプリをクラッシュさせてみました(上にスワイプ)(Webバージョンは正常に実行されていました)

2)Background App refreshを無効にしました。Webバージョンが停止しませんでした。

3)Notificationsを無効にしても、Webバージョンは正常に機能しました。

4)また、Blue barがアプリがBGで実行されていることを示す指示を表示している場合、Google Mapsのようなものはありません。

5)彼らは彼らを生き続けるためにダミーGeo Fencingを使用していますか? (ただし、そのdにはBGアプリの更新も必要です)

導入されたのはiOS8の新機能で、私は気づいていません。

42
rahulg

補足として、AppleはiOS10にNotificationService拡張ポイントを導入しました。これを使用してこれを実現できます。以下はiOS9.x以前にのみ適用されます。


IOSのアプリは、キープアライブソケットを使用してバックグラウンドで長く存続することはできません。また、VoIPバックグラウンドモード(OT:およびIIRC Bluetoothバックグラウンドモード)を使用するアプリを除き、リモート通知によってウェイクアップすることが保証されます。

  • アプリは、バックグラウンドモードまたはタスクに登録されていない限り、バックグラウンドに配置された後、applicationDidEnterBackground:で実行時間は最大5秒です。このデリゲートメソッドで時間がなくなると、アプリは終了します。
  • @xoailで言及されているバックグラウンドタスクモデルには、アプリ固有のシステムによる制限時間(最大30秒...?)があり、延長することはできません。アプリが現在の作業を完了するためのものです。一時停止される前に、メディアをアップロードします。 iOS 7.0以降のバックグラウンド転送サービスは、長時間実行されるファイル転送の代替手段です。
  • サイレントリモート通知は、充電器とWi-Fiでのみ一貫してトリガーされることが確認されていますが、それ以外の場合は常にiOSによって抑制されます。したがって、これは一種の非決定論的です。アプリのバックグラウンドアプリ更新スイッチを切り替えることでこれをオフにできるという事実は言うまでもありません。
  • VoIPバックグラウンドモード(iOS 8以降)は、APNからVoIP通知を受信したときにアプリのハンドラーを呼び出すことを保証します。ただし、アプリレビューガイドラインでは、バックグラウンドモードは本来の目的にのみ使用する必要があると明確に述べています。

したがって、AppleはWhatsAppがWhatsApp通話以外の目的でVoIPバックグラウンドモードを使用することを放棄するか、WhatsAppがたまたま「電話を使用して同期する」アーキテクチャから離れてiPhoneに新しいことをします。

20
Anders

docs に従って、アプリはバックグラウンドに留まり、アプリの有限更新を実行できます。バックグラウンドプロセスを次々に拡張し続けることができます。有限長タスクの実行を調べてください。バックグラウンドからアプリを強制終了しても、システムによって登録されたアクションが実行されると思います。

Whatsappは、セッションを有効に保つために、巧妙なWebセッショントークンとバックグラウンドアプリトークンの生成を行います。

4
xoail

Steven Darbeyによる#32112433で述べたように、これはVoIPサービス通知タイプを含む新しいiOS 8 PushKitサービスを使用して実装されている可能性が高く、アプリケーションをバックグラウンドから再開できます。 VoIP以外の目的でのAPIの誤用ですが、Appleどうやらそれに目をつぶっています。

https://developer.Apple.com/library/prerelease/ios/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html

0
user2525108