ঐচ্ছিক Firebase App Distribution iOS ও Android SDK-এর সাহায্যে, আপনার অ্যাপের নতুন বিল্ড ইনস্টল করার জন্য উপলভ্য হলে, আপনি টেস্টারদের ইন-অ্যাপ অ্যালার্ট দেখাতে পারবেন। আপনার পরীক্ষকদের জন্য নতুন বিল্ড অ্যালার্ট তৈরি ও কাস্টমাইজ করতে কীভাবে App Distribution iOS ও Android SDK ব্যবহার করতে হয় তা এই গাইড ব্যাখ্যা করে।
শুরু করার আগে
আপনি আগে থেকে না করে থাকলে, আপনার iOS প্রোজেক্টে Firebase যোগ করুন।
ধাপ ১: App Distribution Tester API চালু করুন
Google Cloud কনসোলে আপনার প্রোজেক্ট বেছে নিন।
Firebase App Testers API-এর অধীনে, চালু করুন বিকল্পে ক্লিক করুন।
ধাপ ২: আপনার অ্যাপে App Distribution যোগ করুন
প্রোজেক্টের জন্য তৈরি করা Podfile খুলুন (অথবা একটি তৈরি করতে
pod initরান করুন ), তারপর টার্গেট বিভাগের মধ্যে নিম্নলিখিত লাইন যোগ করুন:pod 'FirebaseAppDistribution'
আপনার podfile-এর ডিরেক্টরিতে,
pod installরান করান, তারপর তৈরি করা.xcworkspaceফাইলটি খুলুন।আপনার
Appstruct বাUIApplicationDelegate-এ Firebase মডিউল ইমপোর্ট করুন:Swift
import FirebaseCore import FirebaseAppDistributionObjective-C
@import FirebaseCore; @import FirebaseAppDistribution;আপনার অ্যাপ ডেলিগেটের
application(_:didFinishLaunchingWithOptions:)পদ্ধতিতেFirebaseAppশেয়ার করা ইনস্ট্যান্স কনফিগার করুন:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()Objective-C
// Use Firebase library to configure APIs [FIRApp configure];সোয়াজলিং বন্ধ করা থাকলে, App Distribution আপনার ইমপ্লিমেন্টেশনে
application(_:open:options:)SDK-তে খোলা থাকা যেকোনও URL পাস করুন:Swift
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { if AppDistribution.appDistribution().application(application, open: url, options: options) { return true } // Handle other non-Firebase URLs here. return false }Objective-C
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options { if ([[FIRAppDistribution appDistribution] application:app openURL:url options:options]) { return YES; } // Handle other non-Firebase URLs here. return NO; }সবশেষে, আপনার অ্যাপ আবার কম্পাইল করুন।
ধাপ ৩: অ্যাপ-মধ্যস্থ অ্যালার্ট কনফিগার করা
App Distribution SDK আপনার টেস্টারদের জন্য ইন-অ্যাপ বিল্ড অ্যালার্ট সেট-আপ করার দুটি উপায় প্রদান করে: একটি হল প্রাথমিক অ্যালার্ট কনফিগারেশন, যা টেস্টারদের দেখানোর জন্য আগে থেকেই তৈরি করা অ্যাপ আপডেট ও সাইন-ইন ডায়ালগ সহ আসে এবং অন্যটি হল উন্নত অ্যালার্ট কনফিগারেশন, যা আপনাকে নিজের ইউজার ইন্টারফেস কাস্টমাইজ করতে দেয়। আপনি App Distribution SDK-তে নতুন হলে, প্রথমে সাধারণ অ্যালার্ট কনফিগারেশন ব্যবহার করার জন্য আমরা সাজেস্ট করি।
প্রাথমিক কনফিগারেশন
যেসব পরীক্ষক এখনও অ্যালার্ট চালু করেননি তাদের জন্য আগে থেকে তৈরি করা অ্যালার্ট চালু করার ডায়ালগ দেখাতে checkForUpdate ব্যবহার করুন এবং তারপরে নতুন বিল্ড উপলভ্য আছে কিনা
চেক করুন। কল করা হলে, পদ্ধতিটি নিম্নলিখিত ক্রম অনুযায়ী কাজ করে:
টেস্টারকে তার Google অ্যাকাউন্ট দিয়ে App Distribution-এ সাইন-ইন করতে বলে, তিনি অ্যালার্ট চালু করেছেন কিনা তা চেক করে।
টেস্টার এখনও অ্যালার্ট চালু না করে থাকলে, আগে থেকে তৈরি ডায়ালগ দেখায়।
টেস্ট ডিভাইসে সতর্কতা চালু করা একটি এককালীন প্রসেস এবং আপনার অ্যাপের আপডেট জুড়ে এটি বজায় থাকে। অ্যাপ আনইনস্টল না করা পর্যন্ত অথবা
signOutTesterপদ্ধতি কল না করা পর্যন্ত টেস্ট ডিভাইসে সতর্কতা চালু থাকে। আরও তথ্যের জন্য পদ্ধতির রেফারেন্স ডকুমেন্টেশন দেখুন (Swift বা Objective-C) ।টেস্টারের ইনস্টল করার জন্য নতুন উপলভ্য বিল্ড চেক করে।
আপনি অ্যাপের যেকোনও জায়গায় checkForUpdate() ব্যবহার করতে পারেন। যেমন, আপনি
অ্যাপের রুট ভিউয়ের onAppear(perform:)-এ checkForUpdate() যোগ করে আপনার টেস্টারদের
স্টার্ট-আপে নতুন উপলভ্য বিল্ড ইনস্টল করার জন্য প্রম্পট করতে পারেন।
নিচের উদাহরণে চেক করা হয় যে পরীক্ষক সতর্কতা চালু করেছেন কিনা এবং তার কাছে নতুন বিল্ডের অ্যাক্সেস আছে কিনা। যদি থাকে, তাহলে বিল্ড ইনস্টল করার জন্য উপলভ্য হলে একটি ডায়ালগ দেখানো হয়:
Swift
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
if error != nil {
// Handle error
return
}
guard let release = release else {
return
}
// Customize your alerts here.
let title = "New Version Available"
let message = "Version \(release.displayVersion)(\(release.buildVersion)) is available."
let uialert = UIAlertController(title: title,message: message, preferredStyle: .alert)
uialert.addAction(UIAlertAction(title: "Update", style: UIAlertAction.Style.default) {
_ in
UIApplication.shared.open(release.downloadURL)
})
uialert.addAction(UIAlertAction(title: "Cancel", style: UIAlertAction.Style.cancel) {
_ in
})
// self should be a UIViewController.
self.present(uialert, animated: true, completion: nil)
})
Objective-C
[[FIRAppDistribution appDistribution]
checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
NSError *_Nullable error) {
if (error) {
// Handle error
return;
}
if (release) {
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"New Version Available"
message:[NSString stringWithFormat:@"Version %@ (%@) is available.", release.displayVersion,
release.buildVersion] preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *updateAction = [UIAlertAction actionWithTitle:@"Update"
style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {
[[UIApplication sharedApplication] openURL:release.downloadURL options:@{}
completionHandler:nil];
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel"
style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {}];
[alert addAction:updateAction];
[alert addAction:cancelAction];
[self presentViewController:alert animated:YES completion:nil];
}
}];
উন্নত কনফিগারেশন
signInTester() এবং isTesterSignedIn পদ্ধতিগুলি আপনার পরীক্ষকের সাইন-ইন অভিজ্ঞতা কাস্টমাইজ করার
জন্য আপনাকে আরও বেশি নমনীয়তা দেয়, যাতে এটি আপনার
অ্যাপের লুক অ্যান্ড ফিল আরও ভালোভাবে ম্যাচ করতে পারে।
নিম্নলিখিত উদাহরণে চেক করা হয় যে পরীক্ষক তার
Firebase App Distribution পরীক্ষক অ্যাকাউন্টে আগেই সাইন-ইন করেছেন কিনা, তাই আপনি শুধু সেইসব পরীক্ষকদের জন্য সাইন-ইন
UI দেখাতে পারেন যারা এখনও সাইন-ইন করেননি। পরীক্ষক সাইন-ইন করার পরে, আপনি checkForUpdate()-এ কল করে চেক করতে পারেন যে পরীক্ষকের কাছে
নতুন বিল্ডের অ্যাক্সেস আছে কিনা।
Swift
// Sign in a tester without automatically checking for update
if (!AppDistribution.appDistribution().isTesterSignedIn) {
AppDistribution.appDistribution().signInTester (completion: { error in
// completion block for signInTester
if (error != nil) {
// handle failed sign in
return
}
// handle successful sign in
})
}
// Only check for update if tester is already signed in - do not prompt
if (AppDistribution.appDistribution().isTesterSignedIn) {
AppDistribution.appDistribution().checkForUpdate(completion: { release, error in
// completion block for check for update
})
}
Objective-C
// Sign in a tester without automatically checking for update
if(![[FIRAppDistribution appDistribution] isTesterSignedIn]) {
[[FIRAppDistribution appDistribution]
signInTesterWithCompletion:^(NSError *_Nullable error) {
// completion block for signInTester
if (error) {
// handle failed sign in
return;
}
// handle successful sign in
}];
}
// only check for update if tester is already signed in - do not prompt
if([[FIRAppDistribution appDistribution] isTesterSignedIn]) {
[[FIRAppDistribution appDistribution]
checkForUpdateWithCompletion:^(FIRAppDistributionRelease *_Nullable release,
NSError *_Nullable error) {
// completion block for check for update
}];
}
signOutTester() সহ অতিরিক্ত পদ্ধতি সম্পর্কে তথ্য পেতে,
App Distribution
Swift এবং
Objective-C-এর রেফারেন্স ডকুমেন্টেশন দেখুন।
ধাপ ৪: আপনার প্রয়োগ করা কোড তৈরি ও পরীক্ষা করুন
সবশেষে, আপনার অ্যাপ তৈরি করুন এবং Firebase কনসোল ব্যবহার করে বিল্ড ডিস্ট্রিবিউট করার মাধ্যমে আপনার প্রয়োগ করা ফিচার টেস্ট করুন।
এই ধরনের সাধারণ সমস্যা সমাধানের ব্যাপারে সহায়তা পেতে App Distribution সমস্যার সমাধান সংক্রান্ত নির্দেশিকা দেখুন:
- টেস্টার অ্যাপ-মধ্যস্থ অ্যালার্ট পাচ্ছেন না
- টেস্টারকে একাধিকবার Google-এ সাইন-ইন করতে বলা হচ্ছে