คำแนะนำในการย้ายข้อมูลนี้จะเน้นที่การใช้ App Link และ Universal Link โดยเลือกใช้โฮสติ้งของ Firebase เพื่อโฮสต์ไฟล์การเชื่อมโยงเว็บไซต์แอป
การย้ายข้อมูลนี้จะแทนที่ฟีเจอร์ลิงก์แบบไดนามิกของ Firebase ต่อไปนี้
| ฟีเจอร์ | ลิงก์แบบไดนามิกของ Firebase | App Link/Universal Link |
|---|---|---|
| กำหนดเส้นทางผู้ใช้ไปยัง Store ที่ถูกต้องสำหรับอุปกรณ์ของตนจากการคลิกลิงก์เดียว | ★ | |
| มอบประสบการณ์การใช้งานที่ต่อเนื่องให้แก่ผู้ใช้หลังจากดาวน์โหลดและติดตั้งแอปโดยใช้การทำ Deferred Deep Link | ★ | |
| มอบประสบการณ์ตามบริบทให้แก่ผู้ใช้ด้วยเนื้อหาที่ทำ Deep Link ในแอป (เมื่อติดตั้งแล้ว) | ||
| ระบุข้อมูลวิเคราะห์ที่เกี่ยวข้องกับกิจกรรมการคลิกลิงก์แบบไดนามิก | ||
| ให้ความสามารถในการสร้าง URL ของลิงก์แบบสั้น |
หากคุณยังคงต้องการใช้ฟีเจอร์อื่นๆ ของลิงก์แบบไดนามิกของ Firebase สำหรับการย้ายข้อมูลซึ่งไม่มีการรองรับในคู่มือนี้ โปรดดูสถานการณ์การย้ายข้อมูลอื่นๆ ในเอกสารประกอบคำถามที่พบบ่อยเกี่ยวกับการเลิกใช้งานลิงก์แบบไดนามิก
สมมติว่าคุณมีลิงก์แบบไดนามิกของ Firebase ที่มีลักษณะดังนี้
| ตัวอย่างลิงก์แบบไดนามิก | |
|---|---|
| ชื่อลิงก์ | ยินดีต้อนรับสู่ Example.com |
| Deep Link | https://example.web.app/welcome |
| แอป Android | com.example.android |
| แอป Apple | com.example.ios |
| ลิงก์แบบไดนามิกแบบยาว | https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos |
| ลิงก์แบบไดนามิกแบบสั้น | https://example.page.link/m9Mm |
เป้าหมายของคำแนะนำในการย้ายข้อมูลนี้คือการแทนที่ลิงก์แบบไดนามิกของ Firebase ดังนี้
https://example.page.link/m9Mm
เมื่อใช้ Deep Link ของ App Link/Universal Link ที่มีลักษณะดังนี้
https://your-project-domain.web.app/welcome
โปรดทราบว่า Deep Link ของ App Link/Universal Link จะมอบสิ่งต่อไปนี้ให้แก่ผู้ใช้
- Deep Link ที่ผู้ใช้คลิกได้ซึ่งจะเปิดแอปเมื่อติดตั้งแล้ว
- การเดินทางของผู้ใช้ที่ต่อเนื่องซึ่งจะนำทางไปยังส่วนที่เฉพาะเจาะจงของแอปเมื่อเปิดแอป
อย่างไรก็ตาม Deep Link ของ App Link/Universal Link จะไม่มอบลักษณะการทำงานต่อไปนี้ให้แก่ผู้ใช้ (ซึ่งลิงก์แบบไดนามิกของ Firebase เคยทำได้)
- นำทางผู้ใช้ไปยัง Store ที่ถูกต้องสำหรับอุปกรณ์เพื่อดาวน์โหลดและติดตั้งแอป
- การมอบความต่อเนื่องในเส้นทางของผู้ใช้หลังจากดาวน์โหลด ติดตั้ง และเปิดแอปเป็นครั้งแรก
โปรดทราบถึงความแตกต่างในลักษณะการทำงานและฟังก์ชันการทำงานของ App Link/Universal Link เหล่านี้เมื่อเทียบกับลิงก์แบบไดนามิกของ Firebase ที่ระบุไว้ในตารางด้านบน
ก่อนเริ่มต้น
Firebase Dynamic Links ใช้ App Link (ใน Android) และ Universal Link (ใน iOS) ในการติดตั้งใช้งานเบื้องหลังของตัวเองเพื่อมอบฟังก์ชันการทำ Deep Link หลังจากติดตั้งแอปแล้ว
คู่มือนี้จะอธิบายวิธีสร้าง App Link และ Universal Link ของคุณเองโดยใช้โฮสติ้งของ Firebase เพื่อแทนที่ฟังก์ชันการทำงานส่วนนั้นที่ลิงก์แบบไดนามิกของ Firebase มีให้ ขณะย้ายข้อมูลลิงก์แบบไดนามิกของ Firebase ไปยังโซลูชันการย้ายข้อมูล App Link/Universal Link ใหม่
คุณจะต้องมีข้อมูลต่อไปนี้เพื่อดำเนินการย้ายข้อมูลให้เสร็จสมบูรณ์
- ลิงก์แบบไดนามิกของ Firebase ที่คุณต้องการย้ายข้อมูล
- พารามิเตอร์ของ URL ของ Deep Link ที่รวมอยู่ในลิงก์แบบไดนามิก
- โดเมนที่คุณวางแผนจะใช้แทนโดเมน Firebase Dynamic Links เดิม (หากมี)
คุณสามารถใช้คู่มือการส่งออกข้อมูลเมตาของ Dynamic Links เพื่อส่งออกข้อมูลเมตาของลิงก์ที่มีอยู่และรับข้อมูลที่ระบุไว้ข้างต้น
ภาพรวมขั้นตอนการย้ายข้อมูล
จัดสรรโดเมนใหม่ (หากคุณยังไม่มีโดเมนที่ต้องการใช้) เพื่อโฮสต์ไฟล์การกำหนดค่า App Link/Universal Link โดยใช้โฮสติ้งของ Firebase
สร้างและโฮสต์ไฟล์การกำหนดค่า App Link/Universal Link ในโดเมนที่ฝากบริการ
สร้าง App Link/Universal Link ใหม่ที่ตรงกับสคีมา Deep Link ที่ใช้ในลิงก์แบบไดนามิกของ Firebase
อัปเดตแอป Android/แอป iOS และโค้ดของแอปพลิเคชันเพื่อรับ Deep Link
การทดสอบการผสานรวม App Link/Universal Link
แทนที่ลิงก์แบบไดนามิกของ Firebase ที่เผยแพร่หรือแชร์ด้วย App Link และ Universal Link
ขั้นตอนแรกจะเหมือนกันทั้งสำหรับขั้นตอนการย้ายข้อมูล App Link หรือ Universal Link ส่วนที่เหลือจะแตกต่างกันไปตามแพลตฟอร์ม ดังนั้นโปรดไปที่ส่วนของคู่มือด้านล่างตามแพลตฟอร์มที่คุณต้องการย้ายข้อมูลก่อน
จัดสรรโดเมนใหม่เพื่อโฮสต์ไฟล์การกำหนดค่า App Link/Universal Link โดยใช้โฮสติ้งของ Firebase
เลือกโดเมน
ขั้นตอนแรกคือการเลือกโดเมนที่ต้องการใช้สำหรับ App Link/Universal Link โดเมนนี้จะใช้สำหรับลิงก์ใหม่ที่คุณจะแชร์กับผู้ใช้
หากคุณใช้โฮสติ้งของ Firebase ระบบจะจัดสรรโดเมนย่อยของโปรเจ็กต์ในรูปแบบ your-project-domain.web.app หรือ your-project-domain.firebaseapp.com ให้โดยอัตโนมัติโดยไม่มีค่าใช้จ่าย นอกจากนี้ คุณยังเลือกใช้โดเมนที่กำหนดเองโดยมีหรือไม่มีโฮสติ้งของ Firebase เพื่อโฮสต์ไฟล์การกำหนดค่า App Link/Universal Link ได้ด้วย
ตั้งค่าโฮสติ้งของ Firebase
ถัดไป คุณจะต้องตั้งค่าและกำหนดค่าอินสแตนซ์โฮสติ้งของ Firebase
เมื่อตั้งค่าอินสแตนซ์โฮสติ้งของ Firebase เสร็จแล้ว คุณจะมีโดเมนที่คล้ายกับ your-project-domain.web.app` หรือโดเมนที่กำหนดเองหากต้องการ
ขั้นตอนการย้ายข้อมูลสำหรับ Android App Link
สร้างและฝากไฟล์การกำหนดค่า App Link ในโดเมนที่ฝากบริการใหม่
หากต้องการใช้ App Link คุณต้องโฮสต์ไฟล์การกำหนดค่าที่ช่วยสร้างการเชื่อมโยงที่ปลอดภัยระหว่างโดเมนที่ใช้ในลิงก์กับแอปของคุณ สำหรับ App Link ไฟล์นี้คือ assetlinks.json
ขั้นตอนในการสร้างและโฮสต์ไฟล์ assetlinks.json
ไฟล์ assetlinks.json ช่วยให้เราแสดงรายการแอปที่ได้รับอนุญาตซึ่งสามารถจัดการเนื้อหาของโดเมนเว็บที่เราจะใช้สำหรับ App Links ได้ ไฟล์ assetlinks.json ต้องโฮสต์ในรูทของโดเมนเว็บภายใต้เส้นทาง /.well-known
ทำตามขั้นตอนด้านล่างเพื่อกำหนดค่านี้ให้เสร็จสมบูรณ์
สร้างโฟลเดอร์
.well-knownใต้โฟลเดอร์สาธารณะในไดเรกทอรีรากของโฮสติ้งของ Firebaseสร้างไฟล์ชื่อ
assetlinks.jsonในโฟลเดอร์.well-knownคัดลอกเนื้อหาต่อไปนี้ลงในไฟล์ assetlinks.json โดยสังเกตความหมายของแต่ละช่องด้านล่าง
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.example.android", "sha256_cert_fingerprints": ["01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF:01:23:45:67:89:AB:CD:EF"] } }]namespace- หมายถึงชื่อแอปพลิเคชันที่คุณต้องการระบุpackage_name- หมายถึง applicationId ที่ประกาศในไฟล์build.gradleของแอปsha256_cert_fingerprints- หมายถึงลายนิ้วมือ SHA256 ของไฟล์คีย์สโตร์ที่คุณใช้ในการรับรองแอปพลิเคชัน
คุณสามารถใช้ไฟล์ debug.keystore ที่ Android Studio ใช้เพื่อสร้างระเบียน sha256_cert_fingerprints เพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่องได้ คุณจะเห็นไฟล์ดังกล่าวที่
/Users/<username>/.android/debug.keystoreใน Mac และ Linux และC:\Users\<username>\.android\debug.keystoreใน Windowsจาก Keystore นี้ คุณสามารถดึงค่า SHA256 โดยใช้ Keytool
โปรดดูวิธีการเพิ่มเติมในการทำขั้นตอนนี้ให้เสร็จสมบูรณ์ได้ที่ส่วนนี้ของเอกสารประกอบเกี่ยวกับ App Link
หรือจะใช้ผู้ช่วย App Link ใน Android Studio เพื่อสร้างเนื้อหาไฟล์ assetlinks.json และกำหนดค่าแอปพลิเคชันให้จัดการ App Link ก็ได้
อัปเดตไฟล์ firebase.json เพื่อจัดทำดัชนีไฟล์สำหรับการโฮสต์
"headers": [ { "source": "/.well-known/assetlinks.json", "headers": [ { "key": "Content-Type", "value": "application/json" } ] } ]เมื่อมีไฟล์ assetlinks.json แล้ว ให้เรียกใช้
firebase deployเพื่อโฮสต์การเปลี่ยนแปลงโปรดทราบว่าคุณจะต้องติดตั้ง Firebase CLI เพื่อเรียกใช้คำสั่งทำให้ใช้งานได้ข้างต้น
firebase deploy --only hostingยืนยันไฟล์ assetlinks.json โดยไปที่
https://your-project-domain.web.app/.well-known/assetlinks.json
สร้าง App Link ใหม่ที่ตรงกับสคีมา Deep Link ที่ใช้ในลิงก์แบบไดนามิกของ Firebase
ในขั้นตอนนี้ คุณจะสร้าง Deep Link จากลิงก์แบบไดนามิกของ Firebase ขึ้นมาใหม่โดยใช้ URL ของ Deep Link ปกติที่ตรงกับโดเมนใหม่ที่คุณสร้างขึ้นสำหรับ App Link
ตัวอย่างเช่น สมมติว่าคุณมีลิงก์แบบไดนามิกของ Firebase ต่อไปนี้
| ตัวอย่างลิงก์แบบไดนามิก | |
|---|---|
| ชื่อลิงก์ | ยินดีต้อนรับสู่ Example.com |
| Deep Link | https://example.web.app/welcome |
| แอป Android | com.example.android |
| แอป Apple | com.example.ios |
| ลิงก์แบบไดนามิกแบบยาว | https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos |
| ลิงก์แบบไดนามิกแบบสั้น | https://example.page.link/m9Mm |
ในกรณีนี้ คุณจะดึงพารามิเตอร์ Deep Link เช่น https://example.web.app/welcome และจะใช้พารามิเตอร์นี้เป็นพารามิเตอร์ App Link สำหรับแอป
คุณจะต้องทำขั้นตอนนี้ซ้ำสำหรับลิงก์แบบไดนามิกของ Firebase แต่ละรายการที่ต้องการย้ายข้อมูลไปใช้ App Link/Universal Link และจำลองสคีมาการทำ Deep Link ที่คุณใช้
ตัวอย่างเช่น โปรดดูชุดลิงก์แบบสั้นของลิงก์แบบไดนามิกของ Firebase, พารามิเตอร์ Deep Link และค่า Deep Link ที่ย้ายข้อมูลต่อไปนี้
| ลิงก์แบบสั้น | พารามิเตอร์ Deep Link | Deep Link ที่ย้ายข้อมูลแล้ว |
|---|---|---|
| yourapp.page.link/welcome | https://example.com/welcome | yourapp.web.app/welcome |
| yourapp.page.link/c7sn | https://example.com/main/?p=23&t=1 | yourapp.web.app/main/?p=23&t=1 |
| yourapp.page.link/social | https://example.com/friendinvite/?add=1 | yourapp.web.app/friendinvite/?add=1 |
ถัดไป คุณจะต้องแทนที่อินสแตนซ์ของลิงก์แบบไดนามิกของ Firebase ที่เผยแพร่หรือแชร์ด้วย Deep Link ที่ย้ายข้อมูลใหม่ เพื่อให้ผู้ใช้คลิก App Link เหล่านั้นแทนลิงก์แบบไดนามิกของ Firebase ก่อนหน้า
อัปเดตแอป Android และโค้ดของแอปพลิเคชันเพื่อรับ Deep Link
ขั้นตอนถัดไปหลังจากเลือกโดเมน เลือกสคีมาการทำ Deep Link และย้ายข้อมูลลิงก์แบบไดนามิกของ Firebase ไปยัง App Links คือการอัปเดตแอป Android และโค้ดของแอปพลิเคชันเพื่อรับ Deep Link ใหม่
เราขอแนะนำให้ทำตามเอกสารประกอบเกี่ยวกับ App Link ฉบับเต็มที่นี่ หรือคู่มือ Android Studio เกี่ยวกับการกำหนดค่าแอปเพื่อจัดการ Deep Link แต่ขั้นตอนหลักๆ มีดังนี้
- ระบุว่ากิจกรรมใดควรจัดการ Deep Link ที่เกี่ยวข้อง
- การเพิ่มตัวกรอง Intent สำหรับกิจกรรมเหล่านั้นในไฟล์ AndroidManifest.xml
- การรับ Deep Link ในโค้ดของแอปพลิเคชันของกิจกรรม
สมมติว่าคุณต้องการใช้ MainActivity เพื่อจัดการ Deep Link บางรายการ โดยคุณจะต้องเพิ่มตัวกรอง Intent ต่อไปนี้ลงใน MainActivity ในไฟล์ AndroidManifest.xml
<activity android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</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:host="example.web.app" android:scheme="http"
android:pathPrefix="/welcome" />
<data android:host="example.web.app" android:scheme="https"
android:pathPrefix="/welcome" />
</intent-filter>
</activity>
ในขั้นตอนนี้ คุณกำลังระบุว่า MainActivity เป็นปลายทางสำหรับการจัดการ Deep Link จากโดเมน wxample.web.app และรวมถึงคำนำหน้าเส้นทาง /welcome โปรดทราบว่าคุณจะต้องระบุแอตทริบิวต์ android:autoVerify="true" ด้วย ซึ่งจะช่วยให้คุณกำหนดแอปเป็นตัวแฮนเดิลเริ่มต้นสำหรับลิงก์ประเภทนี้ได้
สุดท้าย คุณจะต้องเพิ่มโค้ดใน MainActivity เพื่อดึงข้อมูล Deep Link และใช้ข้อมูลดังกล่าวเพื่อขับเคลื่อนประสบการณ์การใช้งาน Deep Link ในแอป ซึ่งคล้ายกับตรรกะที่คุณอาจเขียนโค้ดไว้แล้วในแอปเมื่อผสานรวมกับลิงก์แบบไดนามิกของ Firebase
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main)
val data: Uri? = intent?.data
val toast = Toast.makeText(this, data, duration)
toast.show()
}
การทดสอบ App Link
คุณทดสอบ App Link ที่เพิ่งสร้างได้โดยเรียกใช้แอปในอุปกรณ์จริงหรือในโปรแกรมจำลองของ Android
คุณจะต้องสร้างลิงก์ที่คลิกได้โดยใช้โดเมนที่กำหนดค่าไว้สำหรับ App Link แล้วคลิกลิงก์นั้นเพื่อตรวจสอบว่าลิงก์เปิดขึ้นในแอปและนำคุณไปยังกิจกรรมที่ต้องการ
หรือจะทดสอบการผสานรวม App Link โดยใช้ผู้ช่วย App Link ใน Android Studio หรือใช้คำสั่งต่อไปนี้สำหรับ URL ของ App Link ที่คุณกำหนดค่าไว้เพื่อให้แน่ใจว่าระบบจะเปิดกิจกรรมที่ตรงกันอย่างถูกต้องก็ได้
adb shell am start -a android.intent.action.VIEW -d <your_deep_link_url>แทนที่ลิงก์แบบไดนามิกของ Firebase ที่เผยแพร่หรือแชร์ด้วย App Link
ขั้นตอนสุดท้ายในการย้ายข้อมูลคือการแทนที่ลิงก์แบบไดนามิกของ Firebase ที่เผยแพร่หรือแชร์ด้วย App Link ทุกที่ที่ทำได้ และใช้ App Link ต่อไปในอนาคต
การดำเนินการขั้นตอนนี้จะแตกต่างกันไปตามตำแหน่งและวิธีที่คุณเผยแพร่ลิงก์แบบไดนามิกของ Firebase แต่เพื่อช่วยให้คุณติดตามลิงก์ที่มีอยู่ คุณสามารถส่งออกข้อมูลเมตาลิงก์แบบไดนามิกของ Firebase ที่มีอยู่ได้ ดูคู่มือการส่งออกข้อมูลเมตาของ Dynamic Link
ขั้นตอนการย้ายข้อมูลสำหรับ Universal Link ใน iOS
สร้างและโฮสต์ไฟล์การกำหนดค่า Universal Link ในโดเมนโฮสติ้งใหม่
หากต้องการใช้ Universal Link คุณต้องโฮสต์ไฟล์การกำหนดค่าที่ช่วยสร้างการเชื่อมโยงที่ปลอดภัยระหว่างโดเมนที่ใช้ในลิงก์กับแอปของคุณ สำหรับ Universal Link ไฟล์นี้คือไฟล์ apple-app-site-association (หรือที่เรียกว่าไฟล์ AASA)
ขั้นตอนในการสร้างและโฮสต์ไฟล์ apple-app-site-association
ไฟล์ AASA ช่วยให้เราแสดงรายการแอปที่ได้รับอนุญาตซึ่งสามารถจัดการเนื้อหาของโดเมนเว็บที่เราจะใช้สำหรับ Universal Link ได้ ไฟล์ AASA ต้องโฮสต์อยู่ในรูทของโดเมนเว็บภายใต้เส้นทาง /.well-known
ทำตามขั้นตอนด้านล่างเพื่อกำหนดค่านี้ให้เสร็จสมบูรณ์
สร้างโฟลเดอร์ ".well-known" ในโฟลเดอร์สาธารณะในไดเรกทอรีรากของโฮสติ้งของ Firebase
สร้างไฟล์ชื่อ "apple-app-site-association" ในโฟลเดอร์ ".well-known"
คัดลอกเนื้อหาต่อไปนี้ลงในไฟล์ apple-app-site-association โดยสังเกตความหมายของแต่ละช่องด้านล่าง
{ "applinks": { "apps": [], "details": [ { "appID": "$TEAM_ID.com.firebase.UniversalLinks", "paths": [ "NOT /_/*", "/*" ] } ] } }- $TEAM_ID.BundleId - ชื่อแอปพลิเคชันที่สมบูรณ์ในตัวเองซึ่งได้รับอนุญาตให้จัดการลิงก์
อัปเดตไฟล์ firebase.json เพื่อจัดทำดัชนีไฟล์สำหรับการโฮสต์
"headers": [ { "source": "/.well-known/apple-app-site-association", "headers": [ { "key": "Content-Type", "value": "application/json" } ] } ]เมื่อมีไฟล์ AASA แล้ว ให้ใช้คำสั่ง firebase deploy เพื่อโฮสต์การเปลี่ยนแปลง
ยืนยันไฟล์ AASA โดยไปที่ https://your-project-domain.web.app/.well-known/app-app-site-association
สร้าง Universal Link ใหม่ที่ตรงกับสคีมา Deep Link ที่ใช้ในลิงก์แบบไดนามิกของ Firebase
ในขั้นตอนนี้ คุณจะสร้าง Deep Link จากลิงก์แบบไดนามิกของ Firebase ขึ้นมาใหม่โดยใช้ URL ของ Deep Link ปกติที่ตรงกับโดเมนใหม่ที่คุณสร้างขึ้นสำหรับ Universal Link
ตัวอย่างเช่น สมมติว่าคุณมีลิงก์แบบไดนามิกของ Firebase ต่อไปนี้
| ตัวอย่างลิงก์แบบไดนามิก | |
|---|---|
| ชื่อลิงก์ | ยินดีต้อนรับสู่ Example.com |
| Deep Link | https://example.web.app/welcome |
| แอป Android | com.example.android |
| แอป Apple | com.example.ios |
| ลิงก์แบบไดนามิกแบบยาว | https://example.page.link/?link=https://example.web.app/welcome&apn=com.example.android&isi=123456789&ibi=com.example.iuos |
| ลิงก์แบบไดนามิกแบบสั้น | https://example.page.link/m9Mm |
ในกรณีนี้ คุณจะดึงพารามิเตอร์ Deep Link เช่น https://example.web.app/welcome และจะใช้พารามิเตอร์นี้เป็นพารามิเตอร์ Universal Link สำหรับแอปของคุณ
คุณจะต้องทำขั้นตอนนี้ซ้ำสำหรับลิงก์แบบไดนามิกของ Firebase แต่ละรายการที่ต้องการย้ายข้อมูลไปใช้ App Link/Universal Link และจำลองสคีมาการทำ Deep Link ที่คุณใช้
ตัวอย่างเช่น โปรดดูชุดลิงก์แบบสั้นของลิงก์แบบไดนามิกของ Firebase, พารามิเตอร์ Deep Link และค่า Deep Link ที่ย้ายข้อมูลต่อไปนี้
| ลิงก์แบบสั้น | พารามิเตอร์ Deep Link | Deep Link ที่ย้ายข้อมูลแล้ว |
|---|---|---|
| yourapp.page.link/welcome | https://example.com/welcome | yourapp.web.app/welcome |
| yourapp.page.link/c7sn | https://example.com/main/?p=23&t=1 | yourapp.web.app/main/?p=23&t=1 |
| yourapp.page.link/social | https://example.com/friendinvite/?add=1 | yourapp.web.app/friendinvite/?add=1 |
ถัดไป คุณจะต้องแทนที่อินสแตนซ์ลิงก์แบบไดนามิกของ Firebase ที่เผยแพร่หรือแชร์ด้วย Deep Link ที่ย้ายข้อมูลใหม่ เพื่อให้ผู้ใช้คลิก Universal Link เหล่านั้นแทนลิงก์แบบไดนามิกของ Firebase ก่อนหน้า
อัปเดตแอป iOS และโค้ดของแอปพลิเคชันเพื่อรับ Deep Link
ขั้นตอนถัดไปหลังจากเลือกโดเมน เลือกสคีมาการทำ Deep Link และย้ายข้อมูลลิงก์แบบไดนามิกของ Firebase ไปยัง Universal Link คือการอัปเดตแอป iOS และโค้ดของแอปพลิเคชันเพื่อรับ Deep Link ใหม่
เราขอแนะนําให้ทําตามเอกสารประกอบเกี่ยวกับ Universal Link ฉบับเต็มที่นี่เกี่ยวกับการกําหนดค่าแอปเพื่อจัดการ Deep Link แต่ขั้นตอนหลักๆ มีดังนี้
อัปเดตการกำหนดค่าโปรเจ็กต์เพื่อให้แอปจัดการ Deep Link จากโดเมนที่สร้างใหม่ได้
รับ Deep Link ในโค้ดของแอปพลิเคชัน
หากต้องการอัปเดตการกำหนดค่าโปรเจ็กต์เพื่อเปิดใช้แอปให้จัดการ Deep Link ได้ คุณจะต้องเพิ่มโดเมนที่เชื่อมโยงเพิ่มเติมลงในโปรเจ็กต์ใน xCode สำหรับโดเมนที่คุณวางแผนจะใช้โฮสต์ไฟล์ apple-app-site-associate
ซึ่งทำได้โดยทำดังนี้
- กำลังเปิด Xcode
- การเลือกโปรเจ็กต์ในแถบนำทางไฟล์
- ไปที่แท็บ Signing & Capabilities ของการตั้งค่าโปรเจ็กต์
- เลื่อนลงไปที่ส่วนโดเมนที่เชื่อมโยง
- คลิกปุ่ม + เพื่อเพิ่มโดเมนเพิ่มเติมลงในโปรเจ็กต์ในรูปแบบ "applinks:
"
สุดท้าย คุณต้องอัปเดตโค้ดของแอปพลิเคชันเพื่อให้รับ Deep Link ขาเข้าได้
โดยเริ่มจากการอัปเดตไฟล์ AppDelegate.swift เพื่อตอบสนองต่อ Universal Link โดยเพิ่มโค้ดต่อไปนี้
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
AppDelegate.showReceivedUrl(userActivity: userActivity);
return true
}
static func showReceivedUrl(userActivity: NSUserActivity) {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
print(url.absoluteString)
}
โค้ดด้านบนจะลบล้างเมธอด Callback ของ Universal Link และบันทึก URL ของ Deep Link หากมี
ตอนนี้เราจะเรียกใช้เมธอด showReceivedUrl เดียวกันจากคลาส SceneDelegate ด้วย เนื่องจากหากแอปเปิดอยู่แล้วเมื่อผู้ใช้คลิก Universal Link ระบบจะเรียกใช้ Callback ของ Universal Link ภายใน SceneDelegate
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
AppDelegate.showReceivedUrl(userActivity: userActivity)
}
การทดสอบ Universal Link
คุณทดสอบ Universal Link ที่เพิ่งสร้างได้โดยเรียกใช้แอปในอุปกรณ์จริงหรือเครื่องจำลอง
คุณจะต้องสร้างลิงก์ที่คลิกได้โดยใช้โดเมนที่กำหนดค่าไว้สำหรับ Universal Link แล้วคลิกลิงก์นั้นเพื่อตรวจสอบว่าลิงก์เปิดขึ้นในแอปและนำคุณไปยังหน้าจอที่ต้องการในแอป
การรองรับแบนเนอร์แอปอัจฉริยะ
เราขอแนะนำอย่างยิ่งให้ใช้ Smart App Banner เพื่อมอบประสบการณ์การใช้งานที่คล้ายกับ Firebase Dynamic Links ให้แก่ผู้ใช้
เมื่อใช้แบนเนอร์แอปอัจฉริยะ ระบบจะนำผู้ใช้ไปยัง App Store เพื่อดูข้อมูลแอปของคุณหากยังไม่ได้ติดตั้งแอปในอุปกรณ์ นอกจากนี้ คุณยังกำหนดค่าพารามิเตอร์เพื่อส่งไปยังแอปหลังจากที่ดาวน์โหลดและติดตั้งแล้ว เพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ต่อเนื่องได้ด้วย หากติดตั้งแอปไว้แล้ว ระบบจะเปิดแอปโดยส่งพารามิเตอร์ไปยังแอปเพื่อช่วยนำทางผู้ใช้ไปยังเนื้อหาที่เหมาะสมตามแบนเนอร์แอปอัจฉริยะที่ผู้ใช้คลิก
แทนที่ลิงก์แบบไดนามิกของ Firebase ที่เผยแพร่หรือแชร์ด้วย App Link
ขั้นตอนสุดท้ายในการย้ายข้อมูลคือการแทนที่ลิงก์แบบไดนามิกของ Firebase ที่เผยแพร่หรือแชร์ด้วย Universal Link ทุกที่ที่เป็นไปได้ และใช้ Universal Link ต่อไปในอนาคต
การดำเนินการขั้นตอนนี้จะแตกต่างกันไปตามตำแหน่งและวิธีที่คุณเผยแพร่ลิงก์แบบไดนามิกของ Firebase
เราจะเผยแพร่คู่มือเกี่ยวกับวิธีส่งออกข้อมูลเมตาของลิงก์แบบสั้นจากลิงก์แบบไดนามิกของ Firebase เพื่อช่วยคุณติดตามลิงก์แบบไดนามิกของ Firebase ที่มีอยู่ซึ่งจะย้ายข้อมูล โปรดกลับมาดูข้อมูลอัปเดตเพิ่มเติมในเอกสารคำถามที่พบบ่อยเกี่ยวกับการเลิกใช้งาน Dynamic Links