สร้างลิงก์แบบไดนามิกในแอป Flutter

คุณสร้างลิงก์แบบไดนามิกแบบสั้นหรือแบบยาวได้โดยใช้ Firebase Dynamic Links Builder API API นี้ยอมรับ Dynamic Link แบบยาวหรือออบเจ็กต์ที่มีพารามิเตอร์ Dynamic Link และแสดงผล URL ดังตัวอย่างต่อไปนี้

https://example.com/link/WXYZ
https://example.page.link/WXYZ

คุณต้องรวม Firebase SDK ไว้ในแอป Android ก่อนจึงจะสร้าง Dynamic Links ได้ หากตั้งค่าแอปให้รับ Dynamic Link ไว้แล้ว แสดงว่าคุณได้ทำตามขั้นตอนเหล่านี้เรียบร้อยแล้วและข้ามส่วนนี้ได้

  1. ติดตั้งและเริ่มต้นใช้งาน Firebase SDK สําหรับ Flutter หากยังไม่ได้ทํา

  2. จากไดเรกทอรีรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอิน Dynamic Links

    flutter pub add firebase_dynamic_links
    
  3. หากกำลังสร้างแอป Android ให้เปิดหน้าการตั้งค่าโปรเจ็กต์ของคอนโซล Firebase และตรวจสอบว่าคุณได้ระบุคีย์การรับรอง SHA-1 แล้ว หากคุณใช้ App Link ให้ระบุคีย์ SHA-256 ด้วย

  4. เปิดส่วนDynamic Links ในคอนโซล Firebase

    1. หากยังไม่ได้ตั้งค่าโดเมนสำหรับ Dynamic Link ให้คลิกปุ่มเริ่มต้นใช้งาน แล้วทำตามข้อความแจ้ง

      หากคุณมีโดเมน Dynamic Link อยู่แล้ว ให้จดโดเมนนั้นไว้ คุณต้องระบุโดเมนของลิงก์แบบไดนามิกเมื่อสร้างลิงก์แบบไดนามิกแบบเป็นโปรแกรม

    2. แนะนํา: จากเมนู "เพิ่มเติม" (⋮) ให้ระบุรูปแบบ URL ที่อนุญาตให้ใช้ใน Deep Link และลิงก์สำรอง ซึ่งจะช่วยป้องกันไม่ให้บุคคลที่ไม่ได้รับอนุญาตสร้าง Dynamic Link ที่เปลี่ยนเส้นทางจากโดเมนของคุณไปยังเว็บไซต์ที่คุณไม่ได้ควบคุม โปรดดูหัวข้ออนุญาตรูปแบบ URL ที่เฉพาะเจาะจง

หากต้องการสร้าง Dynamic Link ให้สร้างออบเจ็กต์ DynamicLinkParameters ใหม่และส่งไปยัง buildLink() หรือ buildShortLink()

ตัวอย่างขั้นต่ำต่อไปนี้จะสร้าง Dynamic Link แบบยาวไปยัง https://www.example.com/ ที่เปิดด้วย com.example.app.android ใน Android และเปิดแอป com.example.app.ios ใน iOS

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);

หากต้องการสร้าง Dynamic Link แบบสั้น ให้ส่งออบเจ็กต์ DynamicLinkParameters ไปยัง buildShortLink() การสร้างลิงก์แบบสั้นต้องใช้การเรียกใช้เครือข่าย เช่น

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

โดยค่าเริ่มต้น ลิงก์แบบไดนามิกแบบสั้นจะสร้างขึ้นโดยมีส่วนต่อท้ายที่มีความยาวเพียงไม่กี่อักขระ แม้ว่าวิธีนี้จะทำให้ลิงก์สั้นลง แต่ก็อาจทำให้มีคนเดาลิงก์แบบสั้นที่ถูกต้องได้ บ่อยครั้ง การที่ผู้อื่นทำเช่นนั้นจะไม่ก่อให้เกิดอันตรายใดๆ เนื่องจากลิงก์ดังกล่าวนำไปสู่ข้อมูลสาธารณะ

อย่างไรก็ตาม หากลิงก์สั้นๆ นำไปสู่ข้อมูลที่เจาะจงผู้ใช้ คุณควรสร้างลิงก์ที่ยาวขึ้นโดยใช้ส่วนต่อท้าย 17 อักขระ ซึ่งทำให้ผู้อื่นคาดเดาลิงก์แบบไดนามิกที่ถูกต้องได้น้อยมาก โดยส่ง ShortDynamicLinkType.unguessable ไปยังเมธอด buildShortLink() ดังนี้

final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
    dynamicLinkParams,
    shortLinkType: ShortDynamicLinkType.unguessable,
);

คุณสามารถใช้ Dynamic Link Builder API เพื่อสร้าง Dynamic Link ด้วยพารามิเตอร์ที่รองรับ โปรดดูข้อมูลอ้างอิง API

ตัวอย่างต่อไปนี้สร้าง Dynamic Link ที่มีการตั้งค่าพารามิเตอร์ทั่วไปหลายรายการ

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(
    packageName: "com.example.app.android",
    minimumVersion: 30,
  ),
  iosParameters: const IOSParameters(
    bundleId: "com.example.app.ios",
    appStoreId: "123456789",
    minimumVersion: "1.0.1",
  ),
  googleAnalyticsParameters: const GoogleAnalyticsParameters(
    source: "twitter",
    medium: "social",
    campaign: "example-promo",
  ),
  socialMetaTagParameters: SocialMetaTagParameters(
    title: "Example of a Dynamic Link",
    imageUrl: Uri.parse("https://example.com/image.png"),
  ),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

คุณตั้งค่าพารามิเตอร์ Dynamic Link ได้ด้วยวิธีต่อไปนี้

พารามิเตอร์ DynamicLink
setLink ลิงก์ที่แอปจะเปิด ระบุ URL ที่แอปของคุณจัดการได้ ซึ่งโดยทั่วไปคือเนื้อหาหรือเพย์โหลดของแอป ซึ่งจะเริ่มต้นตรรกะเฉพาะแอป (เช่น การให้เครดิตผู้ใช้ด้วยคูปองหรือแสดงหน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่มีการจัดรูปแบบอย่างดี เข้ารหัส URL อย่างถูกต้อง ใช้ HTTP หรือ HTTPS และต้องไม่ใช่ Dynamic Link อื่น
setDomainUriPrefix คำนำหน้า URL ของลิงก์แบบไดนามิก ซึ่งดูได้ในคอนโซล Firebase โดเมน Dynamic Link จะมีลักษณะดังตัวอย่างต่อไปนี้
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl ลิงก์ที่จะเปิดขึ้นเมื่อไม่ได้ติดตั้งแอป ระบุค่านี้เพื่อดำเนินการอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก Play Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บบนอุปกรณ์เคลื่อนที่ หรือแสดงหน้าโปรโมตสําหรับแอป
setMinimumVersion versionCode ของเวอร์ชันต่ำสุดของแอปที่เปิดลิงก์ได้ หากแอปที่ติดตั้งเป็นเวอร์ชันเก่า ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป
IosParameters
setAppStoreId รหัส App Store ของแอป ซึ่งใช้เพื่อส่งผู้ใช้ไปยัง App Store เมื่อไม่ได้ติดตั้งแอป
setFallbackUrl ลิงก์ที่จะเปิดขึ้นเมื่อไม่ได้ติดตั้งแอป ระบุค่านี้เพื่อดำเนินการอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บบนอุปกรณ์เคลื่อนที่ หรือแสดงหน้าโปรโมตสําหรับแอป
setCustomScheme สกีม URL ที่กําหนดเองของแอป หากกําหนดไว้เป็นค่าอื่นที่ไม่ใช่รหัสกลุ่มของแอป
setIpadFallbackUrl ลิงก์ที่จะเปิดใน iPad เมื่อไม่ได้ติดตั้งแอป ระบุค่านี้เพื่อดำเนินการอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บ หรือแสดงหน้าโปรโมตสําหรับแอป
setIpadBundleId รหัสกลุ่มของแอป iOS ที่จะใช้ใน iPad เพื่อเปิดลิงก์ แอปต้องเชื่อมต่อกับโปรเจ็กต์จากหน้าภาพรวมของคอนโซล Firebase
setMinimumVersion หมายเลขเวอร์ชันต่ำสุดของแอปที่เปิดลิงก์ได้ ระบบจะส่ง Flag นี้ไปยังแอปเมื่อเปิดแอป และแอปจะต้องตัดสินใจว่าจะทำอย่างไรกับ Flag นี้
NavigationInfoParameters
setForcedRedirectEnabled หากตั้งค่าเป็น "1" ระบบจะข้ามหน้าตัวอย่างแอปเมื่อเปิดลิงก์แบบไดนามิก และเปลี่ยนเส้นทางไปยังแอปหรือ Store แทน หน้าตัวอย่างแอป (เปิดใช้โดยค่าเริ่มต้น) สามารถส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุดได้เมื่อเปิดลิงก์แบบไดนามิกในแอป อย่างไรก็ตาม หากต้องการให้เปิดลิงก์แบบไดนามิกเฉพาะในแอปที่เปิดลิงก์แบบไดนามิกได้อย่างน่าเชื่อถือโดยไม่ต้องใช้หน้านี้ คุณสามารถปิดใช้หน้านี้ได้ด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะส่งผลต่อลักษณะการทำงานของ Dynamic Link ใน iOS เท่านั้น
SocialMetaTagParameters
setTitle ชื่อที่จะใช้เมื่อแชร์ Dynamic Link ในโพสต์โซเชียล
setDescription คำอธิบายที่จะใช้เมื่อแชร์ Dynamic Link ในโพสต์โซเชียล
setImageUrl URL ของรูปภาพที่เกี่ยวข้องกับลิงก์นี้ รูปภาพควรมีขนาดอย่างน้อย 300x200 พิกเซล และไม่เกิน 300 KB
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
พารามิเตอร์การวิเคราะห์ของ Google Play ระบบจะส่งพารามิเตอร์เหล่านี้ (utm_source, utm_medium, utm_campaign, utm_term, utm_content) ไปยัง Play Store และเพิ่มต่อท้ายเพย์โหลดของลิงก์
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
พารามิเตอร์การวิเคราะห์ของ iTunes Connect ระบบจะส่งพารามิเตอร์เหล่านี้ ("pt", "at", "ct") ไปยัง App Store