5

私はApp Linksをいくつかの新しいアプリケーションで実装しようと考えています。私はdevノートをよく読んで、サーバをセットアップし、正しいjsonヘッダを付けてファイルを追加しました。テストアプリケーションを構築しました。 Android Mに導入されたアプリのディープリンクは、添付されたリンクをメールで送信すると機能しているようですが、クロムのサンプルページでそのページをリロードするだけです。私はちょうど私のWebサーバー上のルートページに当たっています。 (https://www.EXAMPLE.com)。最初はタブレットにクロムの問題がありましたが、ルート証明書を追加して緑色になりました。Android M - App Chromeで動作しないリンク

Nexus 7 2013を使用しています。新しく削除されたAndroid MとChromeが更新されました。

私は自分のサーバー上でHTMLファイルを提供しています(フォールバックページを持っていた場合と同様です)。

これは私がウェブページを使用している/フォールバックしているかどうか、あるいは私が何か間違った設定をしているかどうかを考えてください。それはGmailで美しく動作しますが、タスクセレクタはありませんが、Chromeでは動作しません。

私はいくつかの例を混ぜ合わせてみましたが、htmlはこのように見え、誰もうまくいきませんでした。

<a href="EXAMPLE://">Click HERE for schema</a> 

<a href="https://www.EXAMPLE.com/">Click HERE for url with slash</a> 

<a href="https://www.EXAMPLE.com">Click HERE for url, no slash</a> 

<a href="#" onclick="window.location('https://www.EXAMPLE.com/')">Trying with onclick javascript</a> 

マイアンドロイドマニフェスト:

<activity 
     android:name=".deepActivity" 
     android:label="@string/title_activity_deep" > 
     <intent-filter android:autoVerify="true"> 

      <action android:name="android.intent.action.VIEW" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.BROWSABLE" /> 

      <data android:scheme="http" android:host="www.EXAMPLE.com" /> 
      <data android:scheme="https" android:host="www.MYDOMAIN.com" /> 

      <!-- note that the leading "/" is required for pathPrefix--> 
      <!-- Accepts URIs that begin with "example://gizmos”--> 

     </intent-filter> 

https://developer.android.com/training/app-links/index.html

編集:私がテストしてきた

次のコマンドを使用して自動-検証:

adb shell dumpsys package d | grep DOMAIN -ab5 

と私は結果を得る:ドキュメント

から

230: Package: com.DOMAIN.deeplinkingtest 
275: Domains: www.DOMAIN.com 
308- Status: undefined 

は、このアプリのために現在のリンクハンドリング設定を表示します。検証に合格し、マニフェストにandroid:autoVerify = "true"が含まれているアプリでは、常にステータスが表示されます。このステータスの後の16進数は、Androidシステムのユーザーのアプリリンク設定の記録に関連しています。この値は、検証が成功したかどうかを示すものではありません。

答えて

0

あなたのウェブサイトに次のようにHTMLタグを追加します。 <a href="http://domain.com" data-applink="domain.com">Link</a>

のAndroidManifest.xml

`

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

<intent-filter>     
    <data android:scheme="http" />  
    <!-- or you can use deep linking like -->    

    <data android:scheme="http" android:host="domain.com"/> 
    <action android:name="android.intent.action.VIEW"/> 
    <category android:name="android.intent.category.BROWSABLE"/> 
    <category android:name="android.intent.category.DEFAULT"/> 

</intent-filter> 

`

+0

私はデータ結合を追加しようとしましたが、これはJQuery拡張のためだと思いますか?私はwwwの有無にかかわらず、さまざまなバリエーションでそれを試しました。ドメイン内では、HTMLとマニフェストの両方にスラッシュが付いていてもなくてもかまいませんが、Chromeのものはまだありません。 –

0

...しかし、私はクロームでサンプルページにそれを行う際に、それだけで を再ロードページ

あなたはちょうどChromeに入り、ブラウザバーにhttps://example.comと入力することを意味します。

残念ながら、ブラウザバーにURLを入力するとApp Linkingは機能しません。これはイライラするかもしれませんが、これがうまくいかない理由があります。ポールKinlanは、Googleのデベロッパーの支持者が説明するように、それは貧弱なユーザーエクスペリエンスのようになります。ユーザーはシステムのアドレスバーにURLを入力すると

、その後、ユーザーの 意図は、問題のページを訪問することです。私たちは は、ユーザーがアプリに行くことを意図していないと信じていません。 Ergo、 ユーザーをアプリにリダイレクトすると、ユーザーエクスペリエンスが低下します。

link

この答えはChromeのみのURLバーにURLを入力してに関するものです。しかし、ユーザー()がウェブページのリンクをクリックすると、同じ(ほとんど)が当てはまります。あなたのサンプルリンクのそれぞれがうまくいかない理由について説明しましょう。私は真ん中の2つから始めましょう:これらのリンクについて

<a href="https://www.EXAMPLE.com/">Click HERE for url with slash</a>

<a href="https://www.EXAMPLE.com">Click HERE for url, no slash</a>

をあなたのアプリケーションを起動するために、クロムは、action.VIEWでシステムにcategory.DEFAULT **、category.BROWSABLEの意図を送信しなければなりません、 httpまたはhttpsのいずれかを指定します。あなたはこの意図をキャッチするだろうインテントフィルタを作成することができます(あなたのアプリのリンクインテントフィルタは動作します):

<intent-filter android:autoVerify="true"> 
    <action android:name="android.intent.action.VIEW"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <category android:name="android.intent.category.BROWSABLE"/> 
    <data android:scheme="http"/> 
    <data android:scheme="https"/> 
    <data android:host="www.example.com"/> 
</intent-filter> 

ログを確認します(または、あなたが持っているだけで、それをテストする)場合は、Chromeがないことがわかります意志を消し去る。彼らは内部でのリンクを扱うことを選択します(新しいページに移動することによって)。これはAndroidではなくChromeの機能です。それを変更する方法はありません。ただし、Chromeが尊重するカスタムスキームをURLに指定することはできます。それはあなたの最初のURLに私をもたらします:、category.DEFAULT **、category.BROWSABLE、およびスキームEXAMPLEaction.VIEW

<a href="EXAMPLE://">Click HERE for schema</a>

Chromeは、このURLにスキームを尊重し、意図をオフに起動します。インテントフィルタの設定に応じて、アプリケーションが起動します。あなたの最初の衝動は、あなたのアプリのリンクインテントフィルタにEXAMPLEスキームを追加することがあります

<intent-filter android:autoVerify="true"> 
    <action android:name="android.intent.action.VIEW"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <category android:name="android.intent.category.BROWSABLE"/> 
    <data android:scheme="http"/> 
    <data android:scheme="https"/> 
    <data android:scheme="EXAMPLE"/> 
    <data android:host="www.example.com"/> 
</intent-filter> 

これは、ChromeでリンクをクリックするとChromeアプリを開いているあなたをできるようになります。しかし、は、今すぐApp Linkingを破ります。プロソリューションは、カスタムスキームをキャッチするために変わらず、あなたのアプリのリンクインテントフィルタを残して、第二インテントフィルタを追加することです:

<!-- EXAMPLE scheme intent filter --> 
<intent-filter> 
    <action android:name="android.intent.action.VIEW"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <category android:name="android.intent.category.BROWSABLE"/> 
    <data android:scheme="EXAMPLE"/> 
    <data android:host="www.example.com"/> 
</intent-filter> 

<!-- App Linking intent filter --> 
<intent-filter android:autoVerify="true"> 
    <action android:name="android.intent.action.VIEW"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <category android:name="android.intent.category.BROWSABLE"/> 
    <data android:scheme="http"/> 
    <data android:scheme="https"/> 
    <data android:host="www.example.com"/> 
</intent-filter> 

これはおそらく、TMIですが、根に得ることが理解するのに役立ちます物事が働いている理由/働いていない。

**暗黙のインテントにはcategory.DEFAULTが追加されます。

=========================

更新: 自分のスキームを使用することは悪い習慣であると付け加えるべきです。より良いアプローチが文書化されましたhere

関連する問題