Catch up on everthing we announced at this year's Firebase Summit. Learn more

צור קישורים דינמיים ב- iOS

אתה יכול ליצור קישורים דינמיים קצרים או ארוכים עם ה-API של Firebase Dynamic Links Builder. API זה מקבל קישור דינמי ארוך או אובייקט המכיל פרמטרים של קישור דינמי, ומחזיר כתובות URL כמו הדוגמאות הבאות:

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

דרישות מוקדמות

לפני שתתחיל, הקפד להוסיף Firebase לפרויקט iOS שלך .

השתמש ב-Swift Package Manager כדי להתקין ולנהל תלות ב-Firebase.

  1. בשנת Xcode, עם פרויקט היישום שלך פתוח, נווט אל קובץ> חבילות סוויפט> הוסף תלות חבילת.
  2. כאשר תתבקש, הוסף את מאגר Firebase Apple platforms SDK:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. בחר את ספריית הקישורים הדינמיים.
  5. לקבלת חווית שימוש אופטימלית עם קישורים דינאמיים, אנו ממליצים לאפשר ל- Google Analytics בפרויקט Firebase שלך והוספת SDK Firebase עבור Google Analytics באפליקציה. אתה יכול לבחור בספרייה ללא אוסף IDFA או עם אוסף IDFA.
  6. בסיום, Xcode יתחיל באופן אוטומטי לפתור ולהוריד את התלות שלך ברקע.

כעת, בצע כמה שלבי תצורה:

  1. במסוף Firebase, פתח את הקטע קישורים דינמיים.
  2. אם עדיין לא קיבלת את תנאי השירות והגדרת קידומת URI עבור הקישורים הדינמיים שלך, עשה זאת כאשר תתבקש.

    אם כבר יש לך קידומת URI של Dynamic Links, שים לב לזה. אתה צריך לספק את זה כשאתה יוצר באופן פרוגרמטי קישורים דינמיים.

  3. מומלץ: ציין את דפוסי הכתובות מותרים קישורים עמוקים וקישורי fallback. על ידי כך, אתה מונע מגורמים לא מורשים ליצור קישורים דינמיים המפנים מהדומיין שלך לאתרים שאינך בשליטתם. ראה אפשר דפוסי URL הספציפי .
  4. ודא שמזהה App Store של האפליקציה שלך וקידומת מזהה האפליקציה שלך מצוינים בהגדרות האפליקציה שלך. כדי להציג ולערוך את ההגדרות של האפליקציה שלך, ללכת של הפרויקט Firebase שלך בדף הגדרות ובחר יישום iOS שלך.

    ודא פרויקט Firebase שלך מוגדר כראוי כדי להשתמש בקישורים דינמיים באפליקציה שלך ל- iOS באמצעות פתיחת apple-app-site-association הקובץ שמאוחסן תחום הקישורים הדינמיים שלך. Firebase שירתה את apple-app-site-association הקובץ מן השורש של תחום, כמו גם את .well-known בתיקייה. לדוגמה:

        https://example.com/apple-app-site-association
        https://example.com/.well-known/apple-app-site-association
        

    אם האפליקציה שלך מחובר, apple-app-site-association קובץ הפנית הקידומת מזהה App האפליקציה צרור מזהה. לדוגמה:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    אם details הנכס ריק, בדוק שציינת קידומת זיהה האפליקציה שלך. שים לב שייתכן כי הקידומת של מזהה האפליקציה שלך לא תהיה זהה למזהה הצוות שלך.

הוסף את Firebase לאפליקציה שלך

  1. ייבא את מודול Firebase ב שלך UIApplicationDelegate :

    מָהִיר

    import Firebase

    Objective-C

    @import Firebase;
  2. & Nbsp הגדר FirebaseApp משותף למשל, בדרך כלל של האפליקציה שלך application:didFinishLaunchingWithOptions: השיטה:

    מָהִיר

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

השתמש במסוף Firebase

אם אתה רוצה ליצור קישור דינמי יחיד, או למטרות בדיקה, או עבור צוות השיווק שלך בקלות ליצור קישור שניתן להשתמש במשהו כמו פוסט מדיה חברתית, הדרך הפשוטה ביותר תהיה לבקר קונסולת Firebase וליצור אחד בצע את הטופס שלב אחר שלב באופן ידני.

השתמש ב- iOS Builder API

אתה יכול להשתמש ב- iOS Builder API כדי לבנות קישורים דינמיים מפרמטרים, או כדי לקצר קישור דינמי ארוך.

כדי ליצור קישור דינאמי, ליצור חדש DynamicLinkComponents אובייקט ולציין את פרמטרי הקישור הדינמי על ידי הגדרת התכונות המקבילות של האובייקט. ואז, לקבל את הקישור הארוך מן האובייקט url נכס או לקבל את הקישור הקצר על ידי התקשרות shorten() .

הדוגמה הבאה יוצרת מינימלי קישור דינמי ארוך https://www.example.com/my-page שנפתח עם אפליקציית iOS שלך ב- iOS ו- האפליקציה com.example.android על אנדרואיד:

מָהִיר

הערה: המוצר Firebase זו אינה זמינה על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix)
linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                               domainURIPrefix:dynamicLinksDomainURIPrefix];
linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];

NSLog(@"The long URL is: %@", linkBuilder.url);

כדי ליצור קישור דינמי קצר, לבנות DynamicLinkComponents באותו אופן, ואז להתקשר shorten() .

בניית קישור קצר דורש שיחת רשת, כך שבמקום ישירות חוזרת על הקישור, shorten() קבל מטפל להשלמה, אשר נקרא כאשר משלים את בקשתך. לדוגמה:

מָהִיר

הערה: המוצר Firebase זו אינה זמינה על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

כברירת מחדל, קישורים דינמיים קצרים נוצרים עם סיומות קישור בנות 17 תווים שהופכות את זה לא סביר ביותר שמישהו יוכל לנחש קישור דינמי חוקי. אם, עבור המקרה שלכם, יש לא מזיק למישהו ניחוש בהצלחה קישור קצר, ייתכן שתעדיף ליצור סיומות שאינן רק ככל שיידרש כדי להיות ייחודי, שבו אתה יכול לעשות על ידי קביעת dynamicLinkComponentsOptions רכוש:

מָהִיר

הערה: המוצר Firebase זו אינה זמינה על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
linkBuilder.options = DynamicLinkComponentsOptions()
linkBuilder.options.pathLength = .short
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

הערה: המוצר Firebase זו אינה זמינה על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init];
linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort;
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL,
                                     NSArray<NSString *> * _Nullable warnings,
                                     NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];
      

אתה יכול להשתמש ב-API של Dynamic Link Builder כדי ליצור קישורים דינמיים עם כל אחד מהפרמטרים הנתמכים. ראה התייחסות API לפרטים.

הדוגמה הבאה יוצרת קישור דינמי עם מספר פרמטרים נפוצים:

מָהִיר

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
guard let link = URL(string: "https://www.example.com/my-page") else { return }
let dynamicLinksDomainURIPrefix = "https://example.com/link"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix)

linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios")
linkBuilder.iOSParameters.appStoreID = "123456789"
linkBuilder.iOSParameters.minimumAppVersion = "1.2.3"

linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android")
linkBuilder.androidParameters.minimumVersion = 123

linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut",
                                                                       medium: "social",
                                                                       campaign: "example-promo")

linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters()
linkBuilder.iTunesConnectParameters.providerToken = "123456"
linkBuilder.iTunesConnectParameters.campaignToken = "example-promo"

linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters()
linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link"
linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!"
linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg"

guard let longDynamicLink = linkBuilder.url else { return }
print("The long URL is: \(longDynamicLink)")

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"];
NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link";
FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc]
                                         initWithLink:link
                                         domainURIPrefix:dynamicLinksDomainURIPrefix];

linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc]
                             initWithBundleID:@"com.example.ios"];
linkBuilder.iOSParameters.appStoreID = @"123456789";
linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3";

linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc]
                                 initWithPackageName:@"com.example.android"];
linkBuilder.androidParameters.minimumVersion = 123;

linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc]
                                   initWithSource:@"orkut"
                                           medium:@"social"
                                         campaign:@"example-promo"];

linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init];
linkBuilder.iTunesConnectParameters.providerToken = @"123456";
linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo";

linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init];
linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link";
linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!";
linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg";

NSLog(@"The long URL is: %@", linkBuilder.url);

ניתן להגדיר פרמטרים של קישור דינמי עם האובייקטים והמאפיינים הבאים:

DynamicLinkComponents
קישור

הקישור שהאפליקציה שלך תיפתח. ציין כתובת אתר שהאפליקציה שלך יכולה לטפל בה, בדרך כלל התוכן או המטען של האפליקציה, אשר יוזמת היגיון ספציפי לאפליקציה (כגון זיכוי של המשתמש בקופון או הצגת מסך קבלת פנים). קישור זה חייב להיות כתובת אתר מעוצבת היטב, להיות מקודד כהלכה, להשתמש ב-HTTP או ב-HTTPS, ולא יכול להיות קישור דינמי אחר.

domainURIPrefix קידומת כתובת האתר של קישור דינמי, שתוכל למצוא במסוף Firebase. במראהו תחום קישור דינמי כמו בדוגמאות הבאות:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
כתובת אתר חוזרת הקישור שייפתח כשהאפליקציה לא מותקנת. ציין זאת כדי לעשות משהו אחר מלבד התקנת האפליקציה שלך מחנות Play כאשר האפליקציה לא מותקנת, כגון פתיחת גרסת האינטרנט לנייד של התוכן, או הצגת דף קידום מכירות עבור האפליקציה שלך.
minimumVersion versionCode של הגרסה המינימאלית של האפליקציה שלך שיכול לפתוח את הקישור. אם האפליקציה המותקנת היא גרסה ישנה יותר, המשתמש מועבר לחנות Play כדי לשדרג את האפליקציה.
DynamicLinkIOSParameters
appStoreID מזהה App Store של האפליקציה שלך, המשמש לשליחת משתמשים ל-App Store כאשר האפליקציה אינה מותקנת
כתובת אתר חוזרת הקישור שייפתח כשהאפליקציה לא מותקנת. ציין זאת כדי לעשות משהו אחר מלבד התקנת האפליקציה שלך מ-App Store כאשר האפליקציה לא מותקנת, כגון פתיחת גרסת האינטרנט לנייד של התוכן, או הצגת דף קידום מכירות עבור האפליקציה שלך.
CustomScheme סכימת כתובת האתר המותאמת אישית של האפליקציה שלך, אם היא מוגדרת כמשהו אחר מאשר מזהה החבילה של האפליקציה שלך
iPadFallbackURL הקישור לפתיחה באייפד כאשר האפליקציה לא מותקנת. ציין זאת כדי לעשות משהו אחר מלבד התקנת האפליקציה שלך מ-App Store כאשר האפליקציה אינה מותקנת, כגון פתיחת גרסת האינטרנט של התוכן, או הצגת דף קידום מכירות עבור האפליקציה שלך.
iPadBundleID מזהה החבילה של אפליקציית iOS לשימוש באייפד לפתיחת הקישור. האפליקציה חייבת להיות מחוברת לפרויקט שלך מדף הסקירה הכללית של מסוף Firebase.
minimumAppVersion מספר הגרסה של הגרסה המינימאלית של האפליקציה שלך שיכול לפתוח את הקישור. הדגל הזה מועבר לאפליקציה שלך כאשר היא נפתחת, והאפליקציה שלך חייבת להחליט מה לעשות איתה.
DynamicLinkNavigationInfoParameters
ForcedRedirectEnabled אם מוגדר ל'1', דלג על דף התצוגה המקדימה של האפליקציה כאשר הקישור הדינמי נפתח, ובמקום זאת הפנה מחדש לאפליקציה או לחנות. דף התצוגה המקדימה של האפליקציה (מופעל כברירת מחדל) יכול לשלוח משתמשים בצורה מהימנה יותר ליעד המתאים ביותר כאשר הם פותחים קישורים דינמיים באפליקציות; עם זאת, אם אתה מצפה שקישור דינמי ייפתח רק באפליקציות שיכולות לפתוח קישורים דינמיים בצורה מהימנה ללא דף זה, תוכל להשבית אותו עם פרמטר זה. פרמטר זה ישפיע על התנהגות הקישור הדינמי רק ב-iOS.
DynamicLinkSocialMetaTagParameters
כותרת הכותרת לשימוש כאשר הקישור הדינמי משותף בפוסט חברתי.
תיאורטקסט התיאור לשימוש כאשר הקישור הדינמי משותף בפוסט חברתי.
כתובת אתר של תמונה כתובת האתר לתמונה הקשורה לקישור זה. התמונה צריכה להיות לפחות 300x200 פיקסלים, ופחות מ-300 KB.
DynamicLinkGoogleAnalyticsParameters
מָקוֹר
בינוני
קמפיין
טווח
תוֹכֶן
פרמטרי ניתוח של Google Play. פרמטרים אלה ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) מועברות ל- Play Store וכן מצורף מטען הקישור.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
affiliateToken
campaignToken
פרמטרי ניתוח של iTunes Connect. פרמטרים אלה ( pt , at , ct ) מועברים ל- App Store.

כדי לקצר קישור דינמי ארוך, להעביר את הקישור הדינמי הארוך shortenURL(url:options:) יחד עם DynamicLinkComponentsOptions להתנגד אם אתה רוצה ליצור קשר עם סיומת קצרה:

מָהִיר

הערה: המוצר Firebase זו אינה זמינה על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

הערה: מוצר Firebase זו אינו זמין על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
[FIRDynamicLinkComponents shortenURL:longLinkUrl
                             options:nil
                          completion:^(NSURL * _Nullable shortURL,
                                       NSArray<NSString *> * _Nullable warnings,
                                       NSError * _Nullable error) {
  if (error || shortURL == nil) { return; }
  NSLog(@"The short URL is: %@", shortURL);
}];

כברירת מחדל, Dynamic Links משתמש במזהה החבילה של האפליקציה שלך בתור ערכת כתובת האתר הדרושה לפתיחת האפליקציה שלך. אנו ממליצים להישאר עם ערך ברירת המחדל הזה כדי שהיישום שלך יהיה פשוט.

עם זאת, מפתחים שכבר משתמשים בסכימת כתובת URL מותאמת אישית למטרות אחרות עשויים לרצות להשתמש באותה סכימת כתובת URL מותאמת אישית גם עבור הקישורים הדינמיים שלהם. אם אתה במצב זה, תוכל לציין סכימת כתובת URL אחרת עבור הקישורים הדינמיים שלך ב-Firebase על ידי ביצוע השלבים הבאים:

  1. בעת הגדרת היישום שלך, הקפד לציין את סכמת כתובת האתר ברירת המחדל שישמש ידי לבקשתך לפני קביעת התצורה שלך FirebaseApp למשל משותף:

    מָהִיר

    הערה: המוצר Firebase זו אינה זמינה על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication
                       .LaunchOptionsKey: Any]?) -> Bool {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      FirebaseOptions.defaultOptions()?.deepLinkURLScheme = customURLScheme
      FirebaseApp.configure()
    
      return true
    }
    

    Objective-C

    הערה: המוצר Firebase זו אינה זמינה על MacOS, Mac Catalyst, tvOS, או מטרות watchOS.
    - (BOOL)application:(UIApplication *)application
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // Set deepLinkURLScheme to the custom URL scheme you defined in your
      // Xcode project.
      [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME;
      [FIRApp configure];
    
      return YES;
    }
  2. בכל פעם שאתה יוצר קישור דינמי כלשהו, ​​תצטרך לציין את סכימת כתובת האתר המותאמת אישית שבה משתמשת האפליקציה שלך. אתה יכול לעשות זאת באמצעות המסוף Firebase, קביעת customScheme ב- API של בונה, המפרטת את ius פרמטר ב URL שלך, או לשלוח את iosCustomScheme פרמטר ל- API REST

הצעדים הבאים

כעת לאחר שיצרת קישורים דינמיים, עליך להגדיר את האפליקציה שלך כדי לקבל קישורים דינמיים ולשלוח משתמשים למקום הנכון באפליקציה שלך לאחר שמשתמש יפתח אותם.

כדי לקבל דינמי קישורים באפליקציה, עיין בתיעוד עבור iOS , אנדרואיד , C ++ , ואת האחדות .