Google is committed to advancing racial equity for Black communities. See how.
این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

برنامه iOS پارس خود را به Firebase منتقل کنید

اگر یک کاربر پارسی هستید که به دنبال یک راه حل خدمات Backend جایگزین هستید ، ممکن است Firebase گزینه ایده آل برای برنامه iOS شما باشد.

این راهنما نحوه ادغام سرویس های خاص را در برنامه شما شرح می دهد. برای دستورالعمل های اصلی تنظیم Firebase ، به راهنمای راه اندازی iOS مراجعه کنید.

تجزیه و تحلیل ترافیک گوگل

Google Analytics یک راه حل اندازه گیری رایگان برنامه است که بینشی در مورد استفاده از برنامه و درگیری کاربر ایجاد می کند. Analytics در میان ویژگی های Firebase ادغام شده و گزارش نامحدودی را برای حداکثر 500 رویداد مجزا ارائه می دهد که می توانید با استفاده از Firebase SDK تعریف کنید.

برای کسب اطلاعات بیشتر به اسناد Google Analytics مراجعه کنید.

استراتژی پیشنهادی مهاجرت

استفاده از ارائه دهندگان مختلف تجزیه و تحلیل یک سناریوی متداول است که به راحتی در Google Analytics اعمال می شود. فقط کافی است آن را به برنامه خود اضافه کنید تا از وقایع و ویژگی های کاربرانی که Analytics بطور خودکار جمع می کند ، مانند اولین باز کردن ، بروزرسانی برنامه ، مدل دستگاه ، سن استفاده کنید.

برای رویدادهای سفارشی و خصوصیات کاربر ، می توانید برای ثبت وقایع و ویژگی ها ، از یک استراتژی نوشتن با استفاده از دو روش پارس آنالیتیکس و Google Analytics استفاده کنید ، این امر به شما امکان می دهد تا به تدریج راه حل جدید را حذف کنید.

مقایسه کد

تجزیه و تحلیل تجزیه و تحلیل

 // Start collecting data
[PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions];

NSDictionary *dimensions = @{
  // Define ranges to bucket data points into meaningful segments
  @"priceRange": @"1000-1500",
  // Did the user filter the query?
  @"source": @"craigslist",
  // Do searches happen more often on weekdays or weekends?
  @"dayType": @"weekday"
};
// Send the dimensions to Parse along with the 'search' event
[PFAnalytics trackEvent:@"search" dimensions:dimensions];
 

تجزیه و تحلیل ترافیک گوگل

 // Obtain the AppMeasurement instance and start collecting data
[FIRApp configure];

// Send the event with your params
[FIRAnalytics logEventWithName:@"search" parameters:@{
  // Define ranges to bucket data points into meaningful segments
  @"priceRange": @"1000-1500",
  // Did the user filter the query?
  @"source": @"craigslist",
  // Do searches happen more often on weekdays or weekends?
  @"dayType": @"weekday"
}];
 

پایگاه داده Realtime Firebase

پایگاه داده Firebase Realtime یک پایگاه داده ابری NoSQL است. داده ها به صورت JSON ذخیره می شوند و در هر زمان واقعی برای هر مشتری متصل همگام سازی می شوند.

برای کسب اطلاعات بیشتر به اسناد پایگاه داده Realtime Firebase مراجعه کنید.

تفاوت با داده های تجزیه

اشیاء

در پارس یک PFObject یا یک زیر کلاس از آن را ذخیره می کنید که شامل جفت های کلیدی داده های سازگار با JSON است. داده به صورت طرحریزی است ، به این معنی که نیازی به مشخص کردن کلیدهای موجود در هر PFObject .

تمام داده های Firebase Realtime Database به عنوان اشیاء JSON ذخیره می شوند و معادل PFObject برای آن وجود ندارد. شما به سادگی با انواع درختان JSON مطابق با انواع موجود JSON می نویسید.

در زیر مثالی از چگونگی ذخیره امتیازات بالا برای یک بازی ذکر شده است.

پارس کنید
 PFObject *gameScore = [PFObject objectWithClassName:@"GameScore"];
gameScore[@"score"] = @1337;
gameScore[@"playerName"] = @"Sean Plott";
gameScore[@"cheatMode"] = @NO;
[gameScore saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
  if (succeeded) {
    // The object has been saved.
  } else {
    // There was a problem, check error.description
  }
}];
 
پایه آتش
 // Create a reference to the database
FIRDatabaseReference *ref = [[FIRDatabase database] reference];
NSString *key = [[ref child:@"scores"] childByAutoId].key;
NSDictionary *score = @{@"score": @1337,
                        @"playerName": @"Sean Plott",
                        @"cheatMode": @NO};
[key setValue:score withCompletionBlock:^(NSError *error,  FIRDatabaseReference *ref) {
  if (error) {
    // The object has been saved.
  } else {
    // There was a problem, check error.description
  }
}];
 
برای اطلاعات بیشتر ، راهنمای خواندن و نوشتن اطلاعات را در راهنمای iOS بررسی کنید .

روابط بین داده ها

یک PFObject می تواند با PFObject دیگر رابطه PFObject : هر شیء می تواند از اشیاء دیگر به عنوان مقادیر استفاده کند.

در پایگاه داده Firebase Realtime ، روابط با استفاده از ساختار داده های مسطح که داده ها را در مسیرهای جداگانه تقسیم می کنند ، بهتر بیان می شوند تا در تماس های جداگانه ، آنها بتوانند بارگیری شوند.

در زیر مثالی از چگونگی ساخت رابطه بین پست ها در یک برنامه وبلاگ نویسی و نویسندگان آنها وجود دارد.

پارس کنید
 // Create the author
PFObject *myAuthor = [PFObject objectWithClassName:@"Author"];
myAuthor[@"name"] = @"Grace Hopper";
myAuthor[@"birthDate"] = @"December 9, 1906";
myAuthor[@"nickname"] = @"Amazing Grace";

// Create the post
PFObject *myPost = [PFObject objectWithClassName:@"Post"];
myPost[@"title"] = @"Announcing COBOL, a New Programming Language";

// Add a relation between the Post and the Author
myPost[@"parent"] = myAuthor;

// This will save both myAuthor and myPost
[myPost saveInBackground];
 
پایه آتش
 // Create a reference to the database
FIRDatabaseReference *ref = [[FIRDatabase database] reference];

// Create the author
NSString *myAuthorKey = @"ghopper";
NSDictionary *author = @{@"name": @"Grace Hopper",
                         @"birthDate": @"December 9, 1906",
                         @"nickname": @"Amazing Grace"};
// Save the author
[[ref child:myAuthorKey] setValue:author]

// Create and save the post
NSString *key = [[ref child:@"posts"] childByAutoId].key;
NSDictionary *post = @{@"author": myAuthorKey,
                       @"title": @"Announcing COBOL, a New Programming Language"};
[key setValue:post]
 

طرح داده های زیر نتیجه است.

{
  // Info about the authors
  "authors": {
    "ghopper": {
      "name": "Grace Hopper",
      "date_of_birth": "December 9, 1906",
      "nickname": "Amazing Grace"
    },
    ...
  },
  // Info about the posts: the "author" fields contains the key for the author
  "posts": {
    "-JRHTHaIs-jNPLXOQivY": {
      "author": "ghopper",
      "title": "Announcing COBOL, a New Programming Language"
    }
    ...
  }
}
برای اطلاعات بیشتر ، راهنمای ساختار پایگاه داده خود را بررسی کنید.

خواندن داده

در پارس داده ها را با استفاده از شناسه یک شی خاص پارس یا اجرای پرس و جوها با استفاده از PFQuery .

در Firebase ، داده ها را با اتصال یک شنونده ناهمزمان به یک مرجع بانک اطلاعاتی بازیابی می کنید. شنونده برای حالت اولیه داده و یک بار دیگر هنگامی که داده تغییر می کند ، یک بار شروع می شود ، بنابراین نیازی به افزودن کد برای تعیین تغییر داده ها ندارید.

در زیر مثالی از چگونگی بازیابی نمرات برای یک بازیکن خاص ، بر اساس نمونه ارائه شده در بخش "اشیاء" ، آمده است .

پارس کنید
 PFQuery *query = [PFQuery queryWithClassName:@"GameScore"];
[query whereKey:@"playerName" equalTo:@"Dan Stemkoski"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
  if (!error) {
    for (PFObject *score in objects) {
      NSString *gameScore = score[@"score"];
      NSLog(@"Retrieved: %@", gameScore);
    }
  } else {
    // Log details of the failure
    NSLog(@"Error: %@ %@", error, [error userInfo]);
  }
}];
 
پایه آتش
 // Create a reference to the database
FIRDatabaseReference *ref = [[FIRDatabase database] reference];

// This type of listener is not one time, and you need to cancel it to stop
// receiving updates.
[[[[ref child:@"scores"] queryOrderedByChild:@"playerName"] queryEqualToValue:@"Dan Stemkoski"]
    observeEventType:FIRDataEventTypeChildAdded withBlock:^(FIRDataSnapshot *snapshot) {
  // This will fire for each matching child node.
  NSDictionary *score = snapshot.value;
  NSString gameScore = score[@"score"];
  NSLog(@"Retrieved: %@", gameScore);
}];
 
برای اطلاعات بیشتر در مورد انواع موجود شنوندگان رویداد و نحوه سفارش و فیلتر کردن داده ها ، راهنمای خواندن و نوشتن اطلاعات را در راهنمای iOS بررسی کنید .

استراتژی پیشنهادی مهاجرت

داده های خود را دوباره مرور کنید

پایگاه داده Firebase Realtime برای همگام سازی داده ها در میلی ثانیه در کلیه مشتری های متصل بهینه شده و ساختار داده حاصل از آن با داده های اصلی پارس متفاوت است. این بدان معناست که اولین قدم برای مهاجرت شما در نظر گرفتن تغییراتی که داده های شما نیاز دارند ، از جمله:

  • چگونه اشیاء پارسی شما باید به داده های Firebase نقشه برداری کنند
  • اگر روابط والدین و فرزند دارید ، چگونه می توانید داده های خود را در مسیرهای مختلف تقسیم کنید تا بتوانید در مکالمات جداگانه بارگیری موثری داشته باشید.

داده های خود را مهاجرت کنید

پس از تصمیم گیری در مورد نحوه ساختن داده های خود در Firebase ، باید برنامه ریزی کنید که دوره ای را که باید برنامه شما برای هر دو پایگاه داده بنویسد ، مدیریت کند. انتخاب های شما عبارتند از:

زمینه همگام سازی

در این سناریو ، شما دو نسخه از برنامه دارید: نسخه قدیمی که از پارس و نسخه جدیدی استفاده می کند که از Firebase استفاده می کند. همگام سازی بین دو پایگاه داده توسط پارس ابر کد (پارس به Firebase) انجام می شود ، با کد شما به تغییرات در Firebase گوش می دهد و آن تغییرات را با پارس همگام می کند. قبل از شروع استفاده از نسخه جدید ، باید:

  • پارس داده موجود را به ساختار جدید Firebase تبدیل کرده و آن را در بانک اطلاعات Realtime Firebase بنویسید.
  • توابع پارس ابر کد را بنویسید که از Firebase REST API برای نوشتن به تغییرات در پایگاه داده Realtime Firebase ایجاد شده در پارس داده توسط مشتریان قدیمی استفاده کنید.
  • کدی را بنویسید و بکار ببندید که در Firebase تغییراتی را گوش دهد و آنها را در پایگاه داده پارس همگام سازی کند.

این سناریو جدایی تمیز از کد قدیمی و جدید را تضمین کرده و مشتری را ساده نگه می دارد. چالش های این سناریو استفاده از مجموعه داده های بزرگ در صادرات اولیه و اطمینان از عدم همگام سازی دو طرفه بازگشت مجدد بی نهایت نیست.

دوبار نوشتن

در این سناریو ، شما می توانید نسخه جدیدی از برنامه را که از Firebase و Parse استفاده می شود ، با استفاده از پارس Cloud Code برای همگام سازی تغییرات ایجاد شده توسط مشتریان قدیمی از پارس داده تا پایگاه داده Realtime Firebase استفاده کنید. هنگامی که تعداد کافی از مردم از نسخه پارس تنها برنامه مهاجرت کرده اند ، می توانید کد پارس را از نسخه نوشتن دوبرابر حذف کنید.

این سناریو به هیچ کد سمت سرور احتیاج ندارد. مضرات آن این است که داده هایی که به آنها دسترسی پیدا نمی کنید مهاجرت نمی شوند و اندازه برنامه شما با استفاده از هر دو SDK افزایش می یابد.

تأیید اعتبار Firebase

تأیید اعتبار Firebase می تواند کاربران را با استفاده از گذرواژه‌ها و ارائه دهندگان هویت محبوب فدراسیون مانند Google ، Facebook و Twitter تأیید هویت کند. همچنین کتابخانه های UI را در اختیار شما قرار می دهد تا سرمایه گذاری قابل توجهی را که برای اجرای و حفظ یک تجربه احراز هویت کامل برای برنامه خود در تمام سیستم عامل ها انجام می دهد ، ذخیره کند.

برای کسب اطلاعات بیشتر به اسناد تأیید اعتبار Firebase مراجعه کنید.

تفاوت با پارس نویسنده

پارس کلاس کاربری تخصصی به نام PFUser فراهم می کند که به طور خودکار عملکردهای مورد نیاز برای مدیریت حساب کاربری را کنترل می کند. PFUser زیر مجموعه ای از PFObject ، به این معنی که داده های کاربر در پارس داده موجود است و می تواند با زمینه های اضافی مانند هر PFObject دیگر PFObject .

FIRUser دارای مجموعه ای ثابت از خصوصیات اساسی است - یک شناسه منحصر به فرد ، یک آدرس ایمیل اولیه ، یک نام و یک آدرس اینترنتی عکس - که در پایگاه داده کاربر یک پروژه جداگانه ذخیره می شود. این خصوصیات را می توان توسط کاربر به روز کرد. شما نمی توانید خصوصیات دیگری را به طور مستقیم به آبجکت FIRUser اضافه کنید. درعوض ، می توانید خصوصیات اضافی را در پایگاه داده Realtime Firebase خود ذخیره کنید.

در زیر مثالی از چگونگی ثبت نام کاربر و افزودن فیلد شماره تلفن اضافی وجود دارد.

پارس کنید
 PFUser *user = [PFUser user];
user.username = @"my name";
user.password = @"my pass";
user.email = @"email@example.com";

// other fields can be set just like with PFObject
user[@"phone"] = @"415-392-0202";

[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
  if (!error) {
    // Hooray! Let them use the app now.
  } else {
    // Something went wrong
    NSString *errorString = [error userInfo][@"error"];
  }
}];
 
پایه آتش
 [[FIRAuth auth] createUserWithEmail:@"email@example.com"
                           password:@"my pass"
                         completion:^(FIRUser *_Nullable user, NSError *_Nullable error) {
  if (!error) {
    FIRDatabaseReference *ref = [[FIRDatabase database] reference];
    [[[[ref child:@"users"] child:user.uid] child:@"phone"] setValue:@"415-392-0202"
  } else {
    // Something went wrong
    NSString *errorString = [error userInfo][@"error"];
  }
}];
 

استراتژی پیشنهادی مهاجرت

مهاجرت حسابها

برای مهاجرت حسابهای کاربری از پارس به Firebase ، پایگاه داده کاربر خود را به یک پرونده JSON یا CSV صادر کنید ، سپس با استفاده از auth:import پرونده را در پروژه Firebase خود وارد کنید.

ابتدا پایگاه داده کاربر خود را از کنسول پارس یا پایگاه داده خود میزبان خود صادر کنید. به عنوان مثال ، یک پرونده JSON که از کنسول پارس صادر شده ممکن است به شرح زیر باشد:

{ // Username/password user
  "bcryptPassword": "$2a$10$OBp2hxB7TaYZgKyTiY48luawlTuYAU6BqzxJfpHoJMdZmjaF4HFh6",
  "email": "user@example.com",
  "username": "testuser",
  "objectId": "abcde1234",
  ...
},
{ // Facebook user
  "authData": {
    "facebook": {
      "access_token": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
      "expiration_date": "2017-01-02T03:04:05.006Z",
      "id": "1000000000"
    }
  },
  "username": "wXyZ987654321StUv",
  "objectId": "fghij5678",
  ...
}

سپس ، پرونده صادر شده را به قالب مورد نیاز Firebase CLI تبدیل کنید. از objectId از کاربران پارس خود به عنوان localId برای کاربران Firebase استفاده کنید. همچنین ، base64 مقادیر bcryptPassword را از پارس رمزگذاری کرده و از آنها در قسمت passwordHash استفاده می کند. مثلا:

{
  "users": [
    {
      "localId": "abcde1234",  // Parse objectId
      "email": "user@example.com",
      "displayName": "testuser",
      "passwordHash": "JDJhJDEwJE9CcDJoeEI3VGFZWmdLeVRpWTQ4bHVhd2xUdVlBVTZCcXp4SmZwSG9KTWRabWphRjRIRmg2",
    },
    {
      "localId": "fghij5678",  // Parse objectId
      "displayName": "wXyZ987654321StUv",
      "providerUserInfo": [
        {
          "providerId": "facebook.com",
          "rawId": "1000000000",  // Facebook ID
        }
      ]
    }
  ]
}

در آخر ، پرونده تبدیل شده را با Firebase CLI وارد کنید ، bcrypt را به عنوان الگوریتم هش مشخص کنید:

firebase auth:import account_file.json --hash-algo=BCRYPT

انتقال داده های کاربر

اگر در حال ذخیره داده های اضافی برای کاربران خود هستید ، می توانید با استفاده از استراتژی های شرح داده شده در بخش مهاجرت داده ، آن را به Firebase Realtime Database منتقل کنید. اگر با استفاده از جریان توصیف شده در بخش مهاجرت حساب ها ، حساب های خود را مهاجرت می کنید ، حساب های Firebase شما همانند حساب های پارس شما است و به شما امکان می دهد تا به راحتی مهاجرت و تولید مثل هر گونه رابطه مهم توسط شناسه کاربر را انجام دهید.

پیام ابر ابر Firebase

Firebase Cloud Messaging (FCM) یک راه حل پیام رسانی متقاطع است که به شما امکان می دهد پیام ها و اعلان های قابل اعتماد را بدون هیچ هزینه ای تحویل دهید. آهنگساز Notifications یک سرویس رایگان است که در Firebase Cloud Messaging ساخته شده است و اعلان های کاربر هدفمند را برای توسعه دهندگان برنامه تلفن همراه امکان پذیر می کند.

برای کسب اطلاعات بیشتر به اسناد پیامرسانی Cloud Firebase مراجعه کنید.

تفاوت با اعلان های Parse Push

هر برنامه پارس نصب شده در دستگاهی که برای اعلان ها ثبت شده است ، یک شیء مربوط به Installation دارد ، که در آن شما می توانید تمام داده های مورد نیاز برای هدفمند کردن اعلان ها را ذخیره کنید. Installation یک زیر مجموعه از PFUser ، به این معنی که می توانید هرگونه اطلاعات اضافی را که می خواهید به نمونه های Installation خود اضافه کنید.

آهنگساز اطلاعیه ها بخش های از پیش تعریف شده کاربر را بر اساس اطلاعاتی مانند برنامه ، نسخه برنامه و زبان دستگاه ارائه می دهد. شما می توانید با استفاده از وقایع و ویژگی های Google Analytics برای ایجاد مخاطبان ، بخش های کاربر پیچیده تری بسازید. برای کسب اطلاعات بیشتر به راهنمای راهنمای مخاطبان مراجعه کنید. این اطلاعات هدفمندی در پایگاه داده Realtime Firebase قابل مشاهده نیستند.

استراتژی پیشنهادی مهاجرت

توکن های دستگاه مهاجرت

در حالی که پارس از نشانه های دستگاه APN برای هدف قرار دادن نصب ها برای اعلان ها استفاده می کند ، FCM از نشانه های ثبت نام FCM که به نشانه های دستگاه APN ها نقشه برداری شده اند ، استفاده می کند. فقط کافی است FCM SDK را به برنامه iOS خود اضافه کنید و آن را به صورت خودکار یک نشان FCM واکشی می کند .

انتقال کانال به مباحث FCM

اگر از کانالهای پارس برای ارسال اعلان استفاده می کنید ، می توانید به مباحث FCM ، که همان مدل ناشر-مشترک را ارائه می دهند ، مهاجرت کنید. برای رسیدگی به انتقال از پارس به FCM ، می توانید نسخه جدیدی از برنامه را که از پارس SDK استفاده می شود برای عضویت در کانالهای پارس و FCM SDK برای اشتراک در موضوعات مربوط به FCM استفاده کنید.

به عنوان مثال ، اگر کاربر شما در موضوع "غولها" عضو شده باشد ، کاری را انجام می دهید:

 PFInstallation *currentInstallation = [PFInstallation currentInstallation];
[currentInstallation removeObject:@"Giants" forKey:@"channels"];
[currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
  if (succedeed) {
    [[FIRMessaging messaging] subscribeToTopic:@"/topics/Giants"];
  } else {
    // Something went wrong unsubscribing
  }
}];
 

با استفاده از این استراتژی ، می توانید پیام هایی را به کانال پارس و موضوع FCM مربوطه ارسال کنید و از کاربران نسخه های قدیمی و جدید پشتیبانی کند. هنگامی که کاربران کافی از نسخه پارسی فقط به برنامه مهاجرت کرده اند ، می توانید آن نسخه را غروب کرده و فقط با استفاده از FCM شروع به ارسال کنید.

برای کسب اطلاعات بیشتر به اسناد مباحث FCM مراجعه کنید.

پیکربندی از راه دور Firebase

Firebase Remote Config یک سرویس ابری است که به شما امکان می دهد بدون نیاز به کاربران برای بارگیری به روزرسانی برنامه ، رفتار و ظاهر برنامه خود را تغییر دهید. هنگام استفاده از Remote Config ، مقادیر پیش فرض درون برنامه ایجاد می کنید که رفتار و ظاهر برنامه شما را کنترل می کند. سپس ، می توانید بعداً از کنسول Firebase برای رد کردن مقادیر پیش فرض درون برنامه برای همه کاربران برنامه یا بخش هایی از پایگاه کاربر استفاده کنید.

پیکربندی از راه دور Firebase می تواند در مواردی که می خواهید راه حلهای مختلفی را آزمایش کنید و بتوانید مشتری های بیشتری را به سمت ارائه دهنده دیگری تغییر دهید ، بسیار مفید باشد. به عنوان مثال ، اگر نسخه ای از برنامه خود دارید که هم از Firebase و هم از پارس برای داده استفاده می کند ، می توانید از یک قانون صدک تصادفی برای تعیین اینکه مشتریان از Firebase می خوانند ، استفاده کنید و به تدریج درصد را افزایش دهید.

برای کسب اطلاعات بیشتر در مورد تنظیمات از راه دور Firebase ، به معرفی Remote Config مراجعه کنید .

تفاوت با پیکربندی پارس

با پیکربندی پارس می توانید جفت کلید / مقدار را به صفحه خود در صفحه PFConfig پارس پیکربندی اضافه کنید ، و سپس PFConfig بر روی مشتری PFConfig کنید. هر نمونه PFConfig که بدست می آورید همیشه تغییر ناپذیر است. هنگامی که یک PFConfig جدید را در آینده از شبکه بازیابی می کنید ، هیچ نمونه PFConfig موجود را اصلاح نمی کند ، بلکه در عوض یک مورد جدید ایجاد کرده و آن را از طریق currentConfig در دسترس قرار می دهد.

با Firebase Remote Config می توانید پیش فرض های درون برنامه ای را برای جفت های کلیدی و ارزش ایجاد کنید که می توانید از کنسول Firebase نادیده بگیرید و می توانید از قوانین و شرایطی برای ارائه تغییرات در تجربه کاربری برنامه خود به بخش های مختلف پایگاه کاربر استفاده کنید. تنظیمات از راه دور Firebase یک کلاس واحد را اجرا می کند که جفت های کلیدی / ارزش را در دسترس برنامه شما قرار می دهد. در ابتدا تک آهنگ مقادیر پیش فرض شما را در برنامه تعریف می کند. می توانید هر لحظه که مناسب برنامه شما باشد ، مجموعه جدیدی از ارزش ها را از سرور واکشی کنید. پس از رسیدن مجموعه جدید با موفقیت ، می توانید انتخاب کنید که چه زمانی این گزینه را فعال کنید تا مقادیر جدید در دسترس برنامه قرار بگیرد.

استراتژی پیشنهادی مهاجرت

می توانید با کپی کردن جفت های کلیدی / ارزش پیکربندی پارس خود در کنسول Firebase به Firebase Remote Config بروید ، و سپس با استفاده از نسخه جدید برنامه که از Firebase Remote Config استفاده می کند ، استفاده کنید.

اگر می خواهید با هر دو پارس پیکربندی و Firebase Remote Config آزمایش کنید ، می توانید نسخه جدیدی از برنامه را که از هر دو SDK استفاده می کند ، مستقر کنید تا اینکه تعداد کافی از کاربران فقط از نسخه پارس مهاجرت کرده باشند.

مقایسه کد

پارس کنید

 [PFConfig getConfigInBackgroundWithBlock:^(PFConfig *config, NSError *error) {
  if (!error) {
    NSLog(@"Yay! Config was fetched from the server.");
  } else {
    NSLog(@"Failed to fetch. Using Cached Config.");
    config = [PFConfig currentConfig];
  }

  NSString *welcomeMessage = config[@"welcomeMessage"];
  if (!welcomeMessage) {
    NSLog(@"Falling back to default message.");
    welcomeMessage = @"Welcome!";
  }
}];
 

پایه آتش

 FIRRemoteConfig remoteConfig = [FIRRemoteConfig remoteConfig];
// Set defaults from a plist file
[remoteConfig setDefaultsFromPlistFileName:@"RemoteConfigDefaults"];

[remoteConfig fetchWithCompletionHandler:^(FIRRemoteConfigFetchStatus status, NSError *error) {
  if (status == FIRRemoteConfigFetchStatusSuccess) {
    NSLog(@"Yay! Config was fetched from the server.");
    // Once the config is successfully fetched it must be activated before newly fetched
    // values are returned.
    [self.remoteConfig activateFetched];
  } else {
    NSLog(@"Failed to fetch. Using last fetched or default.");
  }
}];

// ...

// When this is called, the value of the latest fetched and activated config is returned;
// if there's none, the default value is returned.
NSString welcomeMessage = remoteConfig[@"welcomeMessage"].stringValue;