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

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

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

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

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

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

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

  4. เปิดส่วน ลิงก์แบบไดนามิก ในคอนโซล Firebase

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

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

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

      โปรดดูหัวข้ออนุญาตรูปแบบ URL ที่เฉพาะเจาะจง

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

ตัวอย่างแบบย่อต่อไปนี้จะสร้างลิงก์แบบไดนามิกแบบยาวไปยัง 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);

หากต้องการสร้างลิงก์แบบไดนามิกแบบสั้น ให้ส่งออบเจ็กต์ 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 เพื่อสร้างลิงก์แบบไดนามิกด้วยพารามิเตอร์ที่รองรับได้ ดูเอกสารอ้างอิง API

ตัวอย่างต่อไปนี้จะสร้างลิงก์แบบไดนามิกที่มีพารามิเตอร์ทั่วไปหลายรายการ ชุด:

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);

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

พารามิเตอร์ DynamicLink
setLink ลิงก์ที่แอปจะเปิด ระบุ URL ที่แอปของคุณจัดการได้ ซึ่งโดยปกติจะเป็นเนื้อหาหรือเพย์โหลดของแอป ซึ่งจะเริ่มต้นตรรกะเฉพาะแอป (เช่น การให้เครดิตผู้ใช้ด้วยคูปองหรือการแสดงหน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่จัดรูปแบบอย่างถูกต้อง มีการเข้ารหัส URL อย่างเหมาะสม ใช้ HTTP หรือ HTTPS และต้องไม่ใช่ Dynamic Link อื่น
setDomainUriPrefix คำนำหน้า URL ของลิงก์แบบไดนามิก ซึ่งดูได้ในคอนโซล Firebase โดเมนลิงก์แบบไดนามิกจะมีลักษณะดังตัวอย่างต่อไปนี้
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 Scheme ที่กำหนดเองของแอป หากกำหนดให้เป็นอย่างอื่นที่ไม่ใช่รหัสชุดของแอป
setIpadFallbackUrl ลิงก์ที่จะเปิดบน iPad เมื่อไม่ได้ติดตั้งแอป ระบุค่านี้เพื่อดำเนินการอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บ หรือแสดงหน้าโปรโมตสำหรับแอป
setIpadBundleId รหัสชุดของแอป iOS ที่จะใช้ใน iPad เพื่อเปิดลิงก์ แอปต้องเชื่อมต่อกับโปรเจ็กต์จากหน้าภาพรวมของคอนโซล Firebase
setMinimumVersion หมายเลขเวอร์ชันขั้นต่ำของแอปที่เปิดลิงก์ได้ ระบบจะส่ง Flag นี้ไปยังแอปเมื่อเปิด และแอปต้องตัดสินใจว่าจะดำเนินการอย่างไรกับ Flag ดังกล่าว
NavigationInfoParameters
setForcedRedirectEnabled หากตั้งค่าเป็น "1" ให้ข้ามหน้าตัวอย่างแอปเมื่อเปิดลิงก์แบบไดนามิก และเปลี่ยนเส้นทางไปยังแอปหรือ Store แทน หน้าตัวอย่างแอป (เปิดใช้โดยค่าเริ่มต้น) สามารถส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุดได้อย่างน่าเชื่อถือมากขึ้นเมื่อผู้ใช้เปิดลิงก์แบบไดนามิกในแอป อย่างไรก็ตาม หากคุณคาดหวังให้เปิดลิงก์แบบไดนามิกเฉพาะในแอปที่เปิดลิงก์แบบไดนามิกได้อย่างน่าเชื่อถือโดยไม่มีหน้านี้ คุณสามารถปิดใช้ได้ด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะส่งผลต่อลักษณะการทำงานของลิงก์แบบไดนามิกใน iOS เท่านั้น
SocialMetaTagParameters
setTitle ชื่อที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์บนโซเชียลเน็ตเวิร์ก
setDescription คำอธิบายที่จะใช้เมื่อมีการแชร์ลิงก์แบบไดนามิกในโพสต์บนโซเชียลเน็ตเวิร์ก
setImageUrl URL ของรูปภาพที่เกี่ยวข้องกับลิงก์นี้ รูปภาพควรมีขนาดอย่างน้อย 300x200 พิกเซล และมีขนาดไม่เกิน 300 KB
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
พารามิเตอร์ Analytics ของ 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