App Store URL を開く前に iOS システムがハングする 質問する

App Store URL を開く前に iOS システムがハングする 質問する
  1. アプリのダウンロード ボタンがある HTML ページがあります。iOS ユーザーがクリックすると、itms-services 経由で App Store にリダイレクトされます。ここで使用したリンクは次のとおりです。

    window.location.replace("itms-apps://itunes.apple.com/app/id578505616");
    

    モバイルブラウザでは次のようになります:ダウンロードボタン付きのモバイルウェブページ

  2. Facebook/Pinterest には、アプリ内ブラウザがあり、ユーザーをアプリからリダイレクトする前に、キャンセルまたはアプリを開くという警告ボックスの形でユーザーの同意を求めます。アプリを開くと、外部リンクが開きます。次のようになります。Facebook にダウンロード ボタンが埋め込まれたモバイル ウェブページ

アラート ボックスでは次のようになります。アラートボックス付きのFB埋め込みブラウザ

ユーザーが iOS デバイスを使用していると仮定します。ここでの想定される動作は、[アプリを開く] ボタンをクリックすると、ユーザーが App Store アプリにリダイレクトされるというものです。ただし、実際のリダイレクトが発生するまでに約 10 秒の遅延が見られます。

以下のビデオをご覧ください:

https://www.youtube.com/watch?v=_dgh7v-IsK8

https://www.youtube.com/watch?v=_LFHeRnBFgg

https://www.youtube.com/watch?v=82Y-kj-pMyw

ノート:

  1. いつもこれを再現できるわけではないようです。再現できるのは時々だけです。ごめんなさい!
  2. デバイスが初めて遅延すると、その後の AppStore へのリンクは、約 1 日遅れるまでは高速になります。電話を再起動したり、ブラウザのキャッシュをクリアしたり、Facebook/Pinterest を再インストールしたりしても、この問題は再現されません。
  3. itms-apps://リンクを次のように置き換えてみましたhttps://itunes.apple.com/us/app/trusper-tips-tutorials-how/id578505616?mt=8しかし、それでも時々遅延が発生していました。
  4. 遅延はちょうど 10 秒のようです。

なぜこのような遅延が発生するのでしょうか? これはユーザー エクスペリエンスが悪いように思えます。

私の現在の理論は、問題は Apple 側にあるというものです。その理由は、[アプリを開く] ボタンをクリックすると、当社の Web サイトや Facebook/Pinterest アプリが制御できなくなるためです。ボタンをクリックすると、iOS が実際のコンテキスト切り替えを 1 つのアプリから別のアプリに処理すると考えられます。したがって、URL を実際に開くシステム コールがハングしているか、App Store アプリを開くシステム コールがハングしていると考えられます。ただし、どちらかが正しいか間違っているかは証明できませんでした。もっと良い説明ができる人はいませんか?

[編集 2015/04/02] 今日現在、この問題が私の携帯電話 (iPhone 5S、iOS 8.2 搭載) でまだ発生していることが確認できました。さらに調査したところ、この記事を見つけました。この記事では、これが iOS システム関連のバグであると示唆していると思います。OpenUrl がアプリを 10 秒以上フリーズさせる

ベストアンサー1

仕組みに関する適切なドキュメントがないため、原因を特定するのは困難です。

一つの理論を展開させてください。

  • ブラウザからアプリを開くと、ブラウザから App Store へのコンテキスト スイッチが発生します。そのため、最初は多少時間がかかりますが、次回からはキャッシュから開かれるため、より速く開きます。

  • AppStore がデバイス内の iOS AppStore と iOS AppStore サーバー間のキープアライブ接続を使用することを考慮すると、後続のリクエストで同じ接続が再利用されるため、サーバーで初めてソケットを開く回数はそれ以降の回数よりも多くなるように思われます。

  • アプリがキャッシュから削除されると、アプリが開くまでに再び時間がかかり、アプリがキープアライブ接続の Cookie を失うため、ソケットを開くコストを負担しなければならなくなり、ネットワークに若干の遅延が発生します。

  • Safariがハングアップして遅延が発生するなどの他の要因もあります。Safariが混乱する原因については、こちらをご覧ください。ここ

  • iOS にはガベージ コレクションはなく、ARC (自動参照カウント) のようなものだけです。それぞれに利点と欠点があります。これらの欠点が表面化して問題を引き起こすこともありますが、その可能性は否定できません。たとえば、メモリ リークやアプリのクラッシュによって、ダングリング ポインターが残る場合があります。

  • 技術的には、 を使用すると、検索範囲が狭まるitms-appsため、通常の iTunes URL よりも少し有利になります。つまり、iTunes Music Store アプリが検索対象になります。通常の iTunes URL は、Book (iBook)、Music (iTunes)、App (Appstore) などになる可能性があるため、iOS はどのアプリを起動するかを決定する必要がある場合があります。itms-appsitms-apps

これが役に立つことを願っています。

おすすめ記事