web-dev-qa-db-ja.com

Branch.ioディープリンクはiOS9のSafariでは機能しませんが、chrome

chrome iOSアプリを使用すると、ディープリンクは完全に機能します。ただし、サファリでは機能しなくなり、アプリがインストールされていても常にアプリストアページにリダイレクトされるか、「サファリはページを開くことができないため、ページを開くことができない」というアラートが表示されることがあります。アドレスが無効です」。数日前にすべてが完全に機能するので、これはios 9.2アップデート後に発生すると思います。これに対する解決策はありますか?

[〜#〜]更新[〜#〜]

新しい電話(以前にインストールされていないアプリ)を使用して、アプリをインストールしてみました。

ディープリンクは両方のブラウザ(SafariとChrome)で機能します。

Bnc.ltの進むボタンを押すと、SafariとChromeの両方のAppStoreが開きます。

次回リンクディープリンクを開くとき:

  • Safari:アプリストアでリンクを開くかどうかを尋ねられます
  • Chrome:アプリを開くかどうかを尋ねると同時に、アプリストアにリダイレクトします。次にディープリンクをクリックしたときに[アプリで開く]をクリックすると、アプリで開きます。

つまり、stausバーのbnc.lt転送リンクをクリックした後でも、Chromeからアプリを開くことができます。これは、Chromeがアプリストアではなくアプリ。

Safariの場合、ディープリンクがアプリではなく常にアプリストアを開く不可逆的な状態になります。

9
Rocky Perera

ここのブランチのアレックス:これは予想される動作です。残念ながら、フォールバックオプションは、 iOS 9.2でのユニバーサルリンクへの変更 のため、現時点ではかなり制限されています。

TL; DR:ほとんどのユーザーが遭遇することのないちょっとしたエッジケースですが、 Deepviews 機能を利用することで簡単に回避できます。

基本的に、これがあなたが見ているものの背後にある論理です:

  1. アプリがインストールされていないデバイスでリンクを開くと、bnc.ltサーバーが表示され、アプリを入手できるようにAppStoreにリダイレクトされます。 これは良いです
  2. アプリがインストールされているデバイスでリンクを開くと初めて、デバイスはユニバーサルリンクを検出し、すぐにアプリを開きます。これはすべてデバイス上でローカルに行われ、bnc.ltサーバーにアクセスすることさえありません。 これもいいです
  3. bnc.lt進むボタンを押すと、デバイスに「すぐにアプリを開いてほしくない...代わりにこのリンクのWebコンテンツを表示してください」と表示されます。ブランチリンクの場合、この「Webコンテンツ」は単にAppStoreへのリダイレクトです。この時点で、Branchはアプリがインストールされているかどうかを知る方法がないため、インストールされていないと想定する必要があり、上記の1と同じ扱いを受けます。 これはあまり良くありませんが、Appleがシステムを設計したの方法のため、現時点ではこれ以上の選択肢はありません。
  4. 次にリンクを開くと、デバイスは過去にbnc.ltボタンを押したことを記憶し、Webコンテンツに直接移動します。 Safariがこのように機能する理由はわかりません。これが望ましい状況を想像することができず、ユーザーに多くの混乱をもたらすからです

ここでの本当の問題は、bnc.ltを押してアプリをバイパスすると、デバイスがこの設定を記憶し、今後bnc.ltリンクを検出するたびに実行することです。 Chromeは、4。で毎回設定を積極的に確認しているため、引き続き「機能します」が、Safariは前進するだけです。次に何が起こるかについては、いくつかのオプションがあります。

  • Appleの理想的な世界では、通常のWebページが表示され、上にスクロールしてアプリで開くボタンを使用してこの設定を元に戻すことができます。ただし、BranchはすぐにApp Storeにリダイレクトするため、これはオプションではありません。 Deepviews 機能の使用を検討できます。これは、このdoesが、正しく表示されているAppStoreリダイレクトの代わりに実際のWebコンテンツを提供するためです今。
  • ほとんどの場合、リンクを長押ししてアプリで開くを選択できますが、これはオプションが存在することを知らないユーザーには役立ちません。
  • 最悪のシナリオでは、App Storeページが表示され、(インストールの代わりに)開くボタンを押すだけです。ブランチの魔法のおかげで、あなたはまだ正しい場所に行き着くでしょう!
14
Alex Bauer

IOS 9.2以降、AppleはディープリンクのURIスキームをサポートしなくなりました。開発者は、iOSで適切にディープリンクするためにユニバーサルリンクを実装する必要があります。

ユニバーサルリンクを使用すると、カスタムURLスキームを標準のHTTPまたはHTTPSリンクに置き換えることができます。ユニバーサルリンクはすべてのユーザーに機能します。ユーザーがアプリをインストールしている場合、リンクはユーザーをアプリに直接移動します。アプリがインストールされていない場合、リンクはSafariでウェブサイトを開きます。

ユニバーサルリンクの詳細については、を参照してください。

iOSアプリでユニバーサルリンクをサポートし、サーバーをセットアップする方法は?

https://github.com/vineetchoudhary/iOS-Universal-Links


更新[ 1 ]

ブランチリンクの仕組み (Branch.io)

Branchのコンテキストディープリンクの基本をロックする場合。 Branch.ioも従来のディープリンクを使用していることがわかりました

1。リンクの作成Mobile SDKを統合すると、ユーザーがクリックしてアプリ内から別のユーザーを共有または招待するたびに、ブランチリンクを作成できます。アプリがBranch.ioを呼び出し、Branch.ioがBranchリンクを返します。

2。データをリンクに結び付ける

3。リンクをクリックするenter image description here

4。データの使用


リンクをクリックするステップを確認してください。Branch.ioはウェブサイトのURLをアプリのURIスキームにマッピングするだけですが、URIスキームはSafariでサポートされなくなりました。したがって、iOS 9.2でディープリンクするためのオプションはユニバーサルリンクへの移行のみです。または、Branch.ioによる解決策を待つこともできます。ありがとう。

1