インストールされている場合、私のWebサイトからアプリに直接リンクする方法
達成したいこと
ユーザーが私のウェブサイトからリンクをクリックしたときに、アプリ内のユーザー固有のリンクを表示したいと思います(インストールされている場合)。インストールされていない場合は、ブラウザでリンクするようにユーザーに指示します。
例:
www.myapp.com/someplaceinmyappというリンクが記載されたメールがユーザーに届きます。インストールされている場合は、アプリのそのページに移動します。そうでない場合は、ブラウザでそのページに移動します。
それは私のアプリのすべてのページに適用されることに注意してください。したがって、これは私のWebページからのすべてのリンクに適用されます。
私の質問
これには特定の名前がありますか?ディープリンクとアプリリンクについては知っていますが、どちらが自分に適しているかわかりません。
これも可能ですか?現時点で可能かどうかさえわかりません。
このためのコードはWebageまたはアプリにありますか?例:JavascriptまたはKotlinまたはマニフェストファイル内の何か。
どうすればよいですか?これはおそらく私が最も必要としているものです。
ノート
ウェブページに「アプリを使用してください」というポップアップ(ブラウザのみ)が表示されます。インストールされていない場合は、プレイストアに移動します。インストールされている場合は、アプリで自分のWebサイトのホームページに移動します。私はここから最も多くの票を獲得した回答(承認されたものではない)を使用してそれを行う方法を見つけたので、私のマニフェストには次のようなものがあります。
<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="http"
android:host="www.myapp.com"
android:pathPrefix="/install.html" />
</intent-filter>
私の質問に追加したいことがあれば、喜んで追加します。
回答
URLから特定のアプリActivity
またはFragment
アプリを入力するには、ナビゲーションコンポーネントのディープリンクを使用することをお勧めします。
1.ナビゲーションリソースファイルにURLディープリンクを追加します([属性]パネルから)。
<fragment
android:id="@+id/studentEditorFragment"
android:name="com.example.roomtest.studentEditor.StudentEditorFragment"
android:label="StudentEditorFragment"
tools:layout="@layout/fragment_student_editor">
<argument
android:name="studentId"
app:argType="long" />
<deepLink
android:id="@+id/deepLink"
app:uri="www.example.com/roomTest/{studentId}" /> //here, company domain name followed by application path or argument
</fragment>
2.AndroidManifest
ファイルにNavigation属性を追加します。
<activity android:name=".MainActivity"> //【inside the "<activity>" tag】
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<nav-graph android:value="@navigation/navigation" /> //here
</activity>
3. Webブラウザまたはテキストメッセージのリンク「www.example.com/roomTest/-1」を使用します
- 複数の引数を渡すには、「www.example.com/roomText/-1&true」のように「&」でそれらを接続します(プロンプトに従ってxmlの「&」を再フォーマットします)。
役立つビデオ: https://www.youtube.com/watch?v=hEJ78_KLcfA
役立つ読み物: https://developer.android.com/guide/navigation/navigation-deep-link
ディープリンクからのバックスタックの動作: https://stackoverflow.com/a/50359375/3466808
これを行う方法は、AndroidStudioの[ツール]-> [アプリリンクアシスタント]にあるアプリリンクアシスタントを使用することであることがわかりました。これは、開いたときに側面に表示されるはずです。
ステップ1
「URLマッピングエディタを開く」をクリックし、URLマッピングを追加します(「+」をクリックします)。ホストに、ウェブサイトのリンクを入力します。例:https://www.example.com。[パス]で、選択ボックスで[パス]のみを選択し、タイプボックスには何も入力しません。
ステップ2
[アクティビティの選択]ボタンはKotlinでは機能しないため、手動で入力する必要のあるコードを次に示します。
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleIntent(intent)
}
private fun handleIntent(intent: Intent) {
val wbWebView = findViewById<View>(R.id.your_webview) as WebView
val appLinkAction = intent.action
val appLinkData = intent.data
if (Intent.ACTION_VIEW == appLinkAction && appLinkData != null) {
wbWebView.loadUrl(appLinkData.toString())
} else {
// default link that it goes to when opening app
wbWebView.loadUrl("https://www.example.com")
}
}
そしてあなたのonCreateで追加 handleIntent(intent)
ステップ3
「デジタルアセットリンクファイルジェネレータを開く」をクリックします。ほとんどの情報はすでに入力されているので、「デジタルアセットリンクファイルの生成」をクリックしてください。Webサイトに「.well-known」というフォルダーを作成し、そこに「assetlinks.json」というファイルを配置して、プレビューをそこに貼り付けます。だからあなたが行くときhttps://www.yourwebsite.com/.well-known/assetlinks.jsonデジタルアセットリンクファイルが表示されるはずです。また、他のウェブサイトのデジタル資産リンクファイルを見ることができます。グーグルのように、https://www.google.com/.well-known/assetlinks.json。
次に、[リンクして確認]ボタンをクリックします。問題がなければ、ボタンの下に次のように表示されます。
ステップ4
テストする時間です!先に進み、「テストアプリのリンク」をクリックして、WebサイトからURLを入力します。すべてがうまくいけば、明確化の対話は見られないはずです。
また、リンクが記載されたメールを自分に送信して、さらにテストを行うのも好きです。
ノート
Webサイトがhttpではなくhttpsを使用している場合にのみ、App LinksAssistantを使用できます。
android:launchMode="singleTask"
マニフェストのアクティビティタグに追加しました。これは、電子メールでWebサイトからのリンクをクリックすると、新しいウィンドウで開くことを意味します。
彼らはここにビデオを含むこれについてのドキュメントを持っています(彼らはJavaを使用していることに注意してください)
アプリでAndroidアプリのリンクを使用します。適切に実装されている場合、ユーザーはアプリ内の指定された宛先に直接移動します。
これらのドキュメントでこれに関する詳細情報:
Androidアプリのリンクを確認する
暗黙のディープリンクを作成する