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

คุณสร้างลิงก์แบบไดนามิกแบบสั้นหรือแบบยาวได้ด้วย Firebase Dynamic Links Builder API API นี้ยอมรับลิงก์แบบไดนามิกแบบยาวหรือออบเจ็กต์ที่มีพารามิเตอร์ลิงก์แบบไดนามิก และแสดงผล 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 Link ให้ระบุคีย์ SHA-256 ด้วย

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

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

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

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

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

พารามิเตอร์ลิงก์แบบไดนามิก
setLink ลิงก์ที่แอปจะเปิด ระบุ URL ที่แอปจัดการได้ โดยปกติจะเป็นเนื้อหาหรือเพย์โหลดของแอป ซึ่งจะเริ่มต้นตรรกะที่เฉพาะเจาะจงของแอป (เช่น การให้คูปองแก่ผู้ใช้หรือการแสดงหน้าจอต้อนรับ) ลิงก์นี้ต้องเป็น URL ที่จัดรูปแบบอย่างถูกต้อง เข้ารหัส URL อย่างเหมาะสม ใช้ HTTP หรือ HTTPS และต้องไม่ใช่ลิงก์แบบไดนามิกอื่น
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 หมายเลขเวอร์ชันของแอปเวอร์ชันต่ำสุดที่เปิด ลิงก์ได้ ระบบจะส่งแฟล็กนี้ไปยังแอปเมื่อเปิดแอป และแอป ต้องตัดสินใจว่าจะทำอย่างไรกับแฟล็กนี้
NavigationInfoParameters
setForcedRedirectEnabled หากตั้งค่าเป็น '1' ให้ข้ามหน้าตัวอย่างแอปเมื่อเปิดลิงก์แบบไดนามิก และเปลี่ยนเส้นทางไปยังแอปหรือ Store แทน หน้าตัวอย่างแอป (เปิดใช้โดยค่าเริ่มต้น) สามารถส่งผู้ใช้ไปยังปลายทางที่เหมาะสมที่สุด ได้อย่างน่าเชื่อถือมากขึ้นเมื่อเปิดลิงก์แบบไดนามิกในแอป อย่างไรก็ตาม หากคุณคาดหวังให้เปิดลิงก์แบบไดนามิกในแอปที่เปิดลิงก์แบบไดนามิกได้อย่างน่าเชื่อถือโดยไม่ต้องใช้หน้านี้ คุณสามารถปิดใช้ได้ด้วยพารามิเตอร์นี้ พารามิเตอร์นี้จะส่งผลต่อลักษณะการทำงานของลิงก์แบบไดนามิก ใน iOS เท่านั้น
SocialMetaTagParameters
setTitle ชื่อที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์บนโซเชียล
setDescription คำอธิบายที่จะใช้เมื่อแชร์ลิงก์แบบไดนามิกในโพสต์บนโซเชียล
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