วิธีสร้างลิงก์จากเว็บไซต์ของฉันเพื่อนำไปยังแอปของฉันหากติดตั้ง
สิ่งที่ฉันต้องการบรรลุ
เมื่อผู้ใช้คลิกลิงก์ใด ๆ จากเว็บไซต์ของฉันฉันต้องการให้ลิงก์เฉพาะผู้ใช้โดยตรงในแอปของฉัน (หากมีการติดตั้งไว้) หากยังไม่ได้ติดตั้งให้สั่งให้ผู้ใช้ลิงก์ในเบราว์เซอร์
ตัวอย่าง:
ผู้ใช้จะได้รับอีเมลพร้อมลิงค์ในชื่อ: www.myapp.com/someplaceinmyappมันจะไปที่หน้านั้นในแอพของฉันหากมีการติดตั้ง ถ้าไม่เช่นนั้นไปที่หน้านั้นในเบราว์เซอร์
โปรดทราบว่าจะใช้สำหรับทุกหน้าในแอปของฉัน ดังนั้นจึงใช้กับลิงก์ใดก็ได้จากหน้าเว็บของฉัน
คำถามของฉัน
มีชื่อเฉพาะสำหรับสิ่งนี้หรือไม่? ฉันรู้เกี่ยวกับลิงก์ในรายละเอียดและลิงก์แอป แต่ไม่แน่ใจว่าลิงก์ใดเหมาะกับฉัน
เป็นไปได้หรือไม่? ฉันไม่แน่ใจด้วยซ้ำว่าเป็นไปได้หรือไม่ในขณะนี้
รหัสนี้จะอยู่ในเว็บหรือแอปหรือไม่ เช่น Javascript หรือ Kotlin หรือบางอย่างในไฟล์ manifest
ฉันจะทำสิ่งนี้ได้อย่างไร? นี่คงเป็นสิ่งที่ฉันต้องการมากที่สุด
หมายเหตุ
ฉันมีบางอย่างในหน้าเว็บของฉันซึ่งแสดงป๊อปอัป (เฉพาะในเบราว์เซอร์) ที่ระบุว่า "ใช้แอป" หากไม่ได้ติดตั้งให้ไปที่ play store หากติดตั้งแล้วให้ไปที่หน้าแรกของเว็บไซต์ของฉันในแอพของฉัน ฉันพบวิธีการทำจากที่นี่โดยใช้คำตอบที่มีคะแนนโหวตมากที่สุด (ไม่ใช่คำตอบที่ได้รับการยอมรับ) ดังนั้นในรายการของฉันฉันมี:
<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>
หากคุณมีสิ่งใดที่ต้องการเพิ่มในคำถามของฉันฉันยินดีที่จะเพิ่มสิ่งนั้น
คำตอบ
สำหรับการป้อนข้อมูลจำเพาะActivityหรือFragmentแอปของคุณจาก URL ขอแนะนำให้ใช้Deep Linksจาก Navigation Component
1. เพิ่ม Url Deep Link ในไฟล์ทรัพยากรการนำทาง (จากแผงแอตทริบิวต์):
<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ไฟล์:
<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. ใช้ลิงก์ในเว็บเบราว์เซอร์หรือข้อความ: "www.example.com/roomTest/-1"
- สำหรับการส่งผ่านอาร์กิวเมนต์หลายรายการเพียงเชื่อมต่อโดย "&" like: "www.example.com/roomText/-1&true" (ฟอร์แมต "&" ใน xml ตามที่ระบบแจ้ง)
วิดีโอที่เป็นประโยชน์: https://www.youtube.com/watch?v=hEJ78_KLcfA
การอ่านที่เป็นประโยชน์: https://developer.android.com/guide/navigation/navigation-deep-link
พฤติกรรมย้อนกลับจาก Deep Link: https://stackoverflow.com/a/50359375/3466808
ฉันพบว่าวิธีการทำเช่นนี้คือการใช้ตัวช่วยลิงก์แอปซึ่งคุณสามารถพบได้ในสตูดิโอ android ภายใต้เครื่องมือ -> ตัวช่วยลิงก์แอป นี่คือสิ่งที่คุณควรเห็นด้านข้างเมื่อคุณเปิด:
ขั้นตอนที่ 1
คลิก "Open URL Mapping Editor" จากนั้นเพิ่มการแมป 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 add ของคุณ handleIntent(intent)
ขั้นตอนที่ 3
คลิกที่ "Open Digital Asset Links File Generator" ข้อมูลส่วนใหญ่จะถูกกรอกไว้แล้วดังนั้นคุณสามารถคลิกที่ "สร้างไฟล์ลิงก์สินทรัพย์ดิจิทัล" สร้างโฟลเดอร์ชื่อ ". well-known" ในเว็บไซต์ของคุณจากนั้นใส่ไฟล์ชื่อ "assetlinks.json" วางตัวอย่างลงในนั้น ดังนั้นเมื่อคุณไปที่https://www.yourwebsite.com/.well-known/assetlinks.jsonคุณควรจะเห็นไฟล์ลิงก์เนื้อหาดิจิทัล คุณยังสามารถดูเว็บไซต์อื่น ๆ ไฟล์ลิงก์สินทรัพย์ดิจิทัล เช่นเดียวกับ Googlehttps://www.google.com/.well-known/assetlinks.json.
จากนั้นคลิกปุ่ม "ลิงก์และยืนยัน" หากทุกอย่างเป็นไปด้วยดีคุณจะเห็นสิ่งนี้ปรากฏอยู่ใต้ปุ่ม:
ขั้นตอนที่ 4
ได้เวลาทดสอบ! ไปข้างหน้าและคลิกที่ "ทดสอบลิงก์แอป" และใส่ URL จากเว็บไซต์ของคุณ หากทุกอย่างเป็นไปด้วยดีคุณไม่ควรเห็นบทสนทนาที่ทำให้งงงวย
ฉันต้องการทำการทดสอบเพิ่มเติมด้วยการส่งอีเมลถึงตัวเองพร้อมลิงก์ในนั้น
หมายเหตุ
คุณจะใช้ App Links Assistant ได้ก็ต่อเมื่อเว็บไซต์ของคุณใช้ https แทน http
ฉันได้เพิ่มandroid:launchMode="singleTask"ลงในแท็กกิจกรรมของฉันในรายการหมายความว่าหากคุณคลิกลิงก์จากเว็บไซต์ของคุณในอีเมลลิงก์นั้นจะเปิดขึ้นในหน้าต่างใหม่
พวกเขามีเอกสารเกี่ยวกับเรื่องนี้ที่นี่ซึ่งรวมถึงวิดีโอ (โปรดทราบว่าพวกเขากำลังใช้ java)
ใช้ลิงก์แอป Android ในแอปของคุณ หากใช้งานอย่างถูกต้องผู้ใช้จะถูกย้ายไปยังปลายทางที่ระบุในแอปโดยตรง
ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้ในเอกสารเหล่านี้:
ตรวจสอบลิงก์แอป Android
สร้างลิงก์ในรายละเอียดโดยปริยาย