আইওএস-এ ডায়নামিক লিঙ্কগুলি পান

আপনার তৈরি করা Firebase Dynamic Links পেতে, আপনাকে অবশ্যই আপনার অ্যাপে Dynamic Links SDK অন্তর্ভুক্ত করতে হবে এবং হ্যান্ডেল handleUniversalLink: এবং dynamicLinkFromCustomSchemeURL: পদ্ধতিতে কল করতে হবে যখন আপনার অ্যাপ লোড হয় Dynamic Link ডেটা পাস করার জন্য।

পূর্বশর্ত

আপনি শুরু করার আগে, আপনার iOS প্রকল্পে Firebase যোগ করতে ভুলবেন না।

ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।

  1. Xcode-এ, আপনার অ্যাপ প্রকল্প খোলার সাথে, ফাইল > প্যাকেজ যোগ করুন- এ নেভিগেট করুন।
  2. অনুরোধ করা হলে, Firebase Apple প্ল্যাটফর্ম SDK সংগ্রহস্থল যোগ করুন:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Dynamic Links লাইব্রেরি চয়ন করুন।
  5. আপনার লক্ষ্যের বিল্ড সেটিংসের অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে -ObjC পতাকা যোগ করুন।
  6. Dynamic Links সাথে একটি সর্বোত্তম অভিজ্ঞতার জন্য, আমরা আপনার Firebase প্রকল্পে Google Analytics সক্ষম করার এবং আপনার অ্যাপে Google Analytics-এর জন্য Firebase SDK যোগ করার পরামর্শ দিই। আপনি IDFA সংগ্রহ ছাড়াই অথবা IDFA সংগ্রহের মাধ্যমে লাইব্রেরি নির্বাচন করতে পারেন।
  7. শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে পটভূমিতে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।

এখন, কিছু কনফিগারেশন পদক্ষেপ সম্পাদন করুন:

  1. Firebase কনসোলে , Dynamic Links বিভাগ খুলুন। পরিষেবার শর্তাবলী স্বীকার করুন যদি আপনাকে তা করতে বলা হয়।
  2. নিশ্চিত করুন যে আপনার অ্যাপের অ্যাপ স্টোর আইডি এবং আপনার অ্যাপ আইডি উপসর্গ আপনার অ্যাপের সেটিংসে নির্দিষ্ট করা আছে। আপনার অ্যাপের সেটিংস দেখতে ও সম্পাদনা করতে, আপনার Firebase প্রকল্পের সেটিংস পৃষ্ঠায় যান এবং আপনার iOS অ্যাপ নির্বাচন করুন।

    আপনি নিম্নলিখিত URLটি খোলার মাধ্যমে নিশ্চিত করতে পারেন যে আপনার Firebase প্রকল্পটি আপনার iOS অ্যাপে Dynamic Links ব্যবহার করার জন্য সঠিকভাবে কনফিগার করা হয়েছে:

    https://your_dynamic_links_domain/apple-app-site-association

    আপনার অ্যাপ সংযুক্ত থাকলে, apple-app-site-association ফাইলে আপনার অ্যাপের অ্যাপ আইডি প্রিফিক্স এবং বান্ডেল আইডির একটি রেফারেন্স রয়েছে। যেমন:

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

    details ক্ষেত্রটি খালি থাকলে, আপনি আপনার অ্যাপ আইডি প্রিফিক্স নির্দিষ্ট করেছেন তা দুবার চেক করুন। মনে রাখবেন আপনার অ্যাপ আইডি প্রিফিক্স আপনার টিম আইডির মতো নাও হতে পারে।

  3. ঐচ্ছিক : Dynamic Links SDK-এর iOS পেস্টবোর্ডের ব্যবহার অক্ষম করুন।

    ডিফল্টরূপে, Dynamic Links SDK পেস্টবোর্ড ব্যবহার করে পোস্ট-ইনস্টল গভীর লিঙ্কগুলির নির্ভরযোগ্যতা উন্নত করতে। পেস্টবোর্ড ব্যবহার করে, Dynamic Links নিশ্চিত করতে পারে যে যখন কোনও ব্যবহারকারী একটি Dynamic Link খোলে কিন্তু প্রথমে আপনার অ্যাপটি ইনস্টল করতে হবে, ইনস্টলেশনের পরে প্রথমবার অ্যাপটি খোলার সময় ব্যবহারকারী অবিলম্বে মূল লিঙ্কযুক্ত সামগ্রীতে যেতে পারেন৷

    এর নেতিবাচক দিক হল যে পেস্টবোর্ড ব্যবহার iOS 14 এবং পরবর্তীতে একটি বিজ্ঞপ্তি ট্রিগার করে। সুতরাং, প্রথমবার ব্যবহারকারীরা আপনার অ্যাপটি খুললে, পেস্টবোর্ডে একটি URL থাকলে, তারা একটি বিজ্ঞপ্তি দেখতে পাবে যে আপনার অ্যাপটি পেস্টবোর্ড অ্যাক্সেস করেছে, যা বিভ্রান্তির কারণ হতে পারে।

    এই আচরণটি নিষ্ক্রিয় করতে, আপনার Xcode প্রকল্পের Info.plist ফাইলটি সম্পাদনা করুন এবং FirebaseDeepLinkPasteboardRetrievalEnabled কীটি NO তে সেট করুন।

  1. আপনার অ্যাপের Xcode প্রকল্পের তথ্য ট্যাবে, Dynamic Links জন্য ব্যবহার করার জন্য একটি নতুন URL টাইপ তৈরি করুন৷ শনাক্তকারী ক্ষেত্রটিকে একটি অনন্য মান এবং URL স্কিম ক্ষেত্রটিকে আপনার বান্ডেল শনাক্তকারী হিসাবে সেট করুন, যা Dynamic Links দ্বারা ব্যবহৃত ডিফল্ট URL স্কিম।
  2. আপনার অ্যাপের এক্সকোড প্রকল্পের সক্ষমতা ট্যাবে, অ্যাসোসিয়েটেড ডোমেনগুলি সক্ষম করুন এবং অ্যাসোসিয়েটেড ডোমেন তালিকায় নিম্নলিখিতগুলি যুক্ত করুন:
    applinks:your_dynamic_links_domain
  3. আপনি যদি একটি সম্পূর্ণ-কাস্টম ডোমেনের সাথে Dynamic Links পেতে চান, আপনার Xcode প্রকল্পের Info.plist ফাইলে, FirebaseDynamicLinksCustomDomains নামে একটি কী তৈরি করুন এবং এটি আপনার অ্যাপের Dynamic Links URL উপসর্গে সেট করুন৷ যেমন:
    FirebaseDynamicLinksCustomDomains
    
      https://example.com/promos
      https://example.com/links/share
    
  4. আপনার UIApplicationDelegateFirebaseCore মডিউল আমদানি করুন, সেইসাথে আপনার অ্যাপ প্রতিনিধি যে কোনো Firebase মডিউল ব্যবহার করেন। উদাহরণস্বরূপ, Cloud Firestore এবং Authentication ব্যবহার করতে:

    সুইফটইউআই

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

    সুইফট

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    উদ্দেশ্য-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  5. আপনার অ্যাপ প্রতিনিধির application(_:didFinishLaunchingWithOptions:) পদ্ধতিতে একটি FirebaseApp শেয়ার করা উদাহরণ কনফিগার করুন:

    সুইফটইউআই

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

    সুইফট

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

    উদ্দেশ্য-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  6. আপনি যদি SwiftUI ব্যবহার করেন, তাহলে আপনাকে অবশ্যই একটি অ্যাপ্লিকেশন ডেলিগেট তৈরি করতে হবে এবং UIApplicationDelegateAdaptor বা NSApplicationDelegateAdaptor এর মাধ্যমে আপনার App স্ট্রাকটে এটি সংযুক্ত করতে হবে। আপনাকে অবশ্যই অ্যাপ ডেলিগেট সুইজলিং অক্ষম করতে হবে। আরও তথ্যের জন্য, SwiftUI নির্দেশাবলী দেখুন।

    সুইফটইউআই

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  7. এরপরে, application:continueUserActivity:restorationHandler: পদ্ধতি, যখন অ্যাপটি ইতিমধ্যেই ইনস্টল করা থাকে তখন ইউনিভার্সাল লিঙ্ক হিসাবে প্রাপ্ত লিঙ্কগুলি পরিচালনা করুন:

    সুইফট

    দ্রষ্টব্য: এই পণ্যটি macOS, Mac ক্যাটালিস্ট, tvOS, বা watchOS লক্ষ্যে উপলব্ধ নয়৷
    func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
      let handled = DynamicLinks.dynamicLinks()
        .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in
          // ...
        }
    
      return handled
    }

    উদ্দেশ্য-C

    দ্রষ্টব্য: এই পণ্যটি macOS, Mac ক্যাটালিস্ট, tvOS, বা watchOS লক্ষ্যে উপলব্ধ নয়৷
    - (BOOL)application:(UIApplication *)application
    continueUserActivity:(nonnull NSUserActivity *)userActivity
     restorationHandler:
    #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0)
    (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler {
    #else
        (nonnull void (^)(NSArray *_Nullable))restorationHandler {
    #endif  // __IPHONE_12_0
      BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL
                                                              completion:^(FIRDynamicLink * _Nullable dynamicLink,
                                                                           NSError * _Nullable error) {
                                                                // ...
                                                              }];
      return handled;
    }
  8. অবশেষে, application:openURL:options: আপনার অ্যাপের কাস্টম URL স্কিমের মাধ্যমে প্রাপ্ত লিঙ্কগুলি পরিচালনা করুন। ইনস্টলেশনের পরে আপনার অ্যাপটি প্রথমবার খোলা হলে এই পদ্ধতিটি বলা হয়।

    আপনার অ্যাপের প্রথম লঞ্চে যদি Dynamic Link না পাওয়া যায়, তাহলে এই পদ্ধতিটিকে DynamicLink এর urlnil সেট করে কল করা হবে, যা ইঙ্গিত করে যে SDK একটি মিলিত Dynamic Link খুঁজে পেতে ব্যর্থ হয়েছে।

    সুইফট

    দ্রষ্টব্য: এই পণ্যটি macOS, Mac ক্যাটালিস্ট, tvOS, বা watchOS লক্ষ্যে উপলব্ধ নয়৷
    @available(iOS 9.0, *)
    func application(_ app: UIApplication, open url: URL,
                     options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool {
      return application(app, open: url,
                         sourceApplication: options[UIApplication.OpenURLOptionsKey
                           .sourceApplication] as? String,
                         annotation: "")
    }
    
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?,
                     annotation: Any) -> Bool {
      if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
        // Handle the deep link. For example, show the deep-linked content or
        // apply a promotional offer to the user's account.
        // ...
        return true
      }
      return false
    }

    উদ্দেশ্য-C

    দ্রষ্টব্য: এই পণ্যটি macOS, Mac ক্যাটালিস্ট, tvOS, বা watchOS লক্ষ্যে উপলব্ধ নয়৷
    - (BOOL)application:(UIApplication *)app
                openURL:(NSURL *)url
                options:(NSDictionary<NSString *, id> *)options {
      return [self application:app
                       openURL:url
             sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                    annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
    }
    
    - (BOOL)application:(UIApplication *)application
                openURL:(NSURL *)url
      sourceApplication:(NSString *)sourceApplication
             annotation:(id)annotation {
      FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url];
    
      if (dynamicLink) {
        if (dynamicLink.url) {
          // Handle the deep link. For example, show the deep-linked content,
          // apply a promotional offer to the user's account or show customized onboarding view.
          // ...
        } else {
          // Dynamic link has empty deep link. This situation will happens if
          // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link,
          // but pending link is not available for this device/App combination.
          // At this point you may display default onboarding view.
        }
        return YES;
      }
      return NO;
    }