צור קישורים דינמיים ב-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.git
  4. בחר את ספריית הקישורים הדינמיים.
  5. הוסף את הדגל -ObjC לקטע Other Linker Flags של הגדרות הבנייה של היעד שלך.
  6. לחוויה מיטבית עם קישורים דינמיים, אנו ממליצים להפעיל את Google Analytics בפרויקט Firebase שלך ​​ולהוסיף את Firebase SDK עבור Google Analytics לאפליקציה שלך. אתה יכול לבחור בספרייה ללא אוסף IDFA או עם אוסף IDFA.
  7. בסיום, Xcode יתחיל באופן אוטומטי לפתור ולהוריד את התלות שלך ברקע.

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

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

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

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

    ודא שפרויקט Firebase שלך ​​מוגדר כהלכה לשימוש בקישורים דינמיים באפליקציית iOS שלך על ידי פתיחת קובץ ה- apple-app-site-association שמתארח בדומיין Dynamic Links שלך. 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 ID ומזהה החבילה של האפליקציה שלך. לדוגמה:

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

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

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

  1. ייבא את מודול FirebaseCore ב- UIApplicationDelegate שלך, כמו גם כל מודולי Firebase אחרים שנציג האפליקציה שלך משתמש בו. לדוגמה, כדי להשתמש ב-Cloud Firestore ובאימות:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    מָהִיר

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. הגדר מופע משותף FirebaseApp בשיטת application(_:didFinishLaunchingWithOptions:) של נציג האפליקציה שלך:

    SwiftUI

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

    מָהִיר

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. אם אתה משתמש ב- SwiftUI, עליך ליצור נציג יישום ולצרף אותו למבנה App שלך באמצעות UIApplicationDelegateAdaptor או NSApplicationDelegateAdaptor . עליך גם להשבית את העברת נציגי האפליקציה. למידע נוסף, עיין בהוראות של SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

השתמש במסוף 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 וכן מצורפים למטען הקישור.
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 ב-Builder API, לציין את הפרמטר ius ב-URL שלך, או לשלוח את הפרמטר iosCustomScheme ל-REST API

הצעדים הבאים

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

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