สร้างลิงก์แบบไดนามิกในแอป 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 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. ในคอนโซล Firebase ให้เปิดส่วนลิงก์แบบไดนามิก

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

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

    2. แนะนํา: จากเมนู "เพิ่มเติม" (⋮) ให้ระบุรูปแบบ URL ที่อนุญาตใน Deep 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);

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

อย่างไรก็ตาม หาก Short Link นำไปยังข้อมูลที่เฉพาะเจาะจงสำหรับผู้ใช้ คุณควร สร้างลิงก์ที่ยาวขึ้นโดยมีคำต่อท้าย 17 อักขระ ซึ่งจะทำให้ ผู้อื่นคาดเดา Dynamic Link ที่ถูกต้องได้ยากมาก โดยส่ง 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);

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

พารามิเตอร์ DynamicLink
setLink ลิงก์ที่แอปจะเปิด ระบุ URL ที่แอปของคุณจัดการได้ โดยปกติจะเป็นเนื้อหาหรือเพย์โหลดของแอป ซึ่งจะเริ่มต้นตรรกะเฉพาะของแอป (เช่น การให้เครดิตผู้ใช้ด้วยคูปองหรือการแสดง หน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่จัดรูปแบบอย่างถูกต้อง มีการเข้ารหัส URL อย่างถูกต้อง ใช้ HTTP หรือ HTTPS และต้องไม่ใช่ Dynamic Link อื่น
setDomainUriPrefix คำนำหน้า URL ของลิงก์แบบไดนามิก ซึ่งดูได้ในคอนโซล Firebase A โดเมน Dynamic Link มีลักษณะดังตัวอย่างต่อไปนี้
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl ลิงก์ที่จะเปิดเมื่อไม่ได้ติดตั้งแอป ระบุการดำเนินการนี้เพื่อทำ อย่างอื่นนอกเหนือจากการติดตั้งแอปจาก Play Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บสำหรับอุปกรณ์เคลื่อนที่ หรือ แสดงหน้าโปรโมตแอป
setMinimumVersion รหัสเวอร์ชันของแอปเวอร์ชันขั้นต่ำที่เปิดลิงก์ได้ หากแอปที่ติดตั้งเป็นเวอร์ชันเก่า ระบบจะนำผู้ใช้ไปยัง Play Store เพื่ออัปเกรดแอป
IosParameters
setAppStoreId รหัส App Store ของแอปที่ใช้เพื่อส่งผู้ใช้ไปยัง App Store เมื่อไม่ได้ติดตั้งแอป
setFallbackUrl ลิงก์ที่จะเปิดเมื่อไม่ได้ติดตั้งแอป ระบุการดำเนินการนี้เพื่อทำ อย่างอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่ได้ติดตั้งแอป เช่น เปิดเนื้อหาเวอร์ชันเว็บสำหรับอุปกรณ์เคลื่อนที่ หรือ แสดงหน้าโปรโมตแอป
setCustomScheme สกีม URL ที่กำหนดเองของแอป หากกำหนดให้เป็นอย่างอื่นที่ไม่ใช่ รหัสชุดของแอป
setIpadFallbackUrl ลิงก์ที่จะเปิดใน iPad เมื่อไม่ได้ติดตั้งแอป ระบุพารามิเตอร์นี้เพื่อ ทำอย่างอื่นนอกเหนือจากการติดตั้งแอปจาก App Store เมื่อไม่ได้ติดตั้ง แอป เช่น เปิดเนื้อหาเวอร์ชันเว็บ หรือ แสดงหน้าโปรโมตแอป
setIpadBundleId รหัส Bundle ของแอป iOS ที่จะใช้ใน iPad เพื่อเปิดลิงก์ แอป ต้องเชื่อมต่อกับโปรเจ็กต์จากหน้าภาพรวมของ คอนโซล Firebase
setMinimumVersion หมายเลขเวอร์ชันของเวอร์ชันต่ำสุดของแอปที่เปิดลิงก์ได้ ระบบจะส่งแฟล็กนี้ไปยังแอปเมื่อเปิดแอป และแอปของคุณ ต้องตัดสินใจว่าจะทำอย่างไรกับแฟล็กนี้
NavigationInfoParameters
setForcedRedirectEnabled หากตั้งค่าเป็น "1" ให้ข้ามหน้าตัวอย่างแอปเมื่อเปิด Dynamic Link และเปลี่ยนเส้นทางไปยังแอปหรือสโตร์แทน หน้าตัวอย่างแอป (เปิดใช้โดยค่าเริ่มต้น) จะส่งผู้ใช้ไปยังปลายทางที่ เหมาะสมที่สุดได้อย่างน่าเชื่อถือมากขึ้นเมื่อผู้ใช้เปิดลิงก์แบบไดนามิกในแอป อย่างไรก็ตาม หากคุณคาดหวังให้เปิดลิงก์แบบไดนามิกเฉพาะในแอปที่เปิด ลิงก์แบบไดนามิกได้อย่างน่าเชื่อถือโดยไม่ต้องใช้หน้านี้ คุณก็ปิดใช้ได้ด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะมีผลต่อลักษณะการทำงานของ 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