web-dev-qa-db-ja.com

iOSで機能しないリダイレクト付きのユニバーサルリンク

会社のドメインリンクはiOSアプリになります。 MailChimpを介して電子メールWebサイトから会社のWebサイトにリダイレクトされるリンクは、最終的にiOSアプリになります。

ただし、メールアプリ(メール、Gmailなど)でタップされたMailChimpトラッキングリンクを介して会社のドメインWebサイトにリダイレクトするリンクは、最終的に会社のWebサイトのSafariになります。

リダイレクト付きのMailChimpメールリンクをユニバーサルリンクとして機能させ、iOSアプリを起動するための回避策はありますか?

6

私は実際にこれに対する回避策を開発しました。

マジックアクセスリンクを生成することで、ユーザーがサインインできる機能を備えたアプリを作成しました。ユーザーはアプリをダウンロードしてインストールし、メールアドレスを入力すると、サーバーは次の形式のリンクを含むメールを送信します。 https://www.example.com/app/accesslink/ {{tokenHere}}

AASAファイルを作成し、ドメイン(www.example.com)にアップロードしました。例:) https://developer.Apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks。 html

ほとんどのユーザーはアクセスリンクを正常に生成し、それをタップするとアプリが読み込まれます。アプリには、トークンを取得して認証するためのハンドラーがありました。

この問題は、一部の電子メールプロバイダーが電子メール内のアクセスリンクを書き直したときに発生しました。これは特に、URLblockerがインストールされている企業ユーザーに発生しました。

これを回避するために、サーバー上に書き換えルールを作成して、www.example.com/app/accesslink/{{anythingHerer}}を「404accesslink.html」というサーバー上の静的ファイルに書き換えました(ファイル名はarbetary、サーバーです) was asp.net IIS)。次に、「404accesslink.html」を次のように編集して、次のメタを含めました。

<script>
    document.writeln('<meta name="Apple-iTunes-app" content="app-id={{APP_ID_HERE}}, app-argument=' + document.location.href + '">');
</script>

ファイルはリライトで提供されたため、location.href値はアクセスリンクと完全に一致していました。これはiOSをだましてアプリを開き、アプリへのパスを渡しました。その後、通常どおりハンドラーでそれを取得し、ユーザーを認証できます。

アプリを開くことが自動でなく、ページが表示された場合に備えて、いくつかの簡単な手順を記述しました(ただし、テストではこれは行われませんでした)。

<!DOCTYPE html>
<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  <script>
    document.writeln('<meta name="Apple-iTunes-app" content="app-id=XXXXXXXXXX, app-argument=' + document.location.href + '">');
  </script>
  <style>
    body {
        padding-top: 5%;
        color: #FFF;
        font-size: 1em;
        font-family: Arial, Helvetica, sans-serif;
        text-align: left;
        background: #00338D;
        margin: 50px;
    }
    h1 {
        font-weight: normal;
        font-size: 1.8em;
    }
    a {
        color: #FFF;
        font-weight: bold;
        text-decoration: none;
    }
  </style>
  <title>XXXXXXXXX</title>
  <body>
    <h1>Please select 'Open' in the app banner displayed at the top of this page to open the app with your access link.</h1>
    <p>If you do not see the app banner above then please close your browser and sign into the app using your email address and the password you used to register for the event.</p>
    <p>If you do not know your password then you can <a href="https://XXXXXXXXXXXXX/account/mobileforgot/">reset it by following this link</a>.</p>
    <p>Thank you,</p>
    <p>XXXXXXXXXXXXX team</p>
  </body>
</html>

メタは、JSクライアント側を使用するのではなく、サーバー側で設定およびレンダリングされた方がおそらく優れていますが、それでも機能しました。

これが行われる前:システムがアプリのリンクを書き換え/ラップした場合、アプリは新しいURLに関連付けられておらず、ユーザーがURLをタップしたときにSafariで開かれました。

これが行われた後:システムがアプリのリンクを書き直した/ラップした場合、アプリは新しいURLに関連付けられておらず、ユーザーがURLをタップしたときにアプリで開かれました。

13
Ben Edge

ユニバーサルリンクは、開かれているリンクの実際のURLに基​​づいています。これは、(MailChimpのように)リダイレクトでリンクをラップすると、ユニバーサルリンクが機能しないことを意味します。

これを回避するには、MailChimpで クリックトラッキングを無効にする する必要があります。ただし、そのアプリがユニバーサルリンクをサポートしていない場合は、すべてのアプリ(Gmailなど)で機能するとは限りません。

Branch.io (完全な開示:私はブランチチームに所属しています)は、この問題を修正し、ユニバーサルリンクとクリックトラッキングの両方を有効にするために、いくつかの大規模な電子メールプラットフォームと協力してきましたが、これまではMailChimpは興味を持っていません。これがあなたが見たいものであることを彼らに知らせてください!

6
Alex Bauer

いいえ、それは不可能です。

関連するリンクを処理するリソースは、パブリックエリアのApple-app-site-associationファイルで構成できます。メールチンプは持っていません。

https://developer.Apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html

ユニバーサルリンクのサポートを追加するのは簡単です。あなたが取る必要がある3つのステップがあります:

アプリが処理できるURLに関するJSONデータを含むApple-app-site-associationファイルを作成します。 Apple-app-site-associationファイルをHTTPSWebサーバーにアップロードします。ファイルは、サーバーのルートまたは.well-knownサブディレクトリに配置できます。ユニバーサルリンクを処理するようにアプリを準備します。

0
LLIAJLbHOu