لیست تغییرات کتابخانه
                    ویرایش
                
                
                شما در این صفحه میتوانید از تغییرات هر نسخه کتابخانه چابک مطلع شوید. چابک برای نسخهگذاری از مدل Semantic Versioning استفاده میکند. برای آشنایی با این مدل این قسمت را مطالعه نمایید.
نسخه ۲.۱.۰ - ۱۳۹۹/۰۸/۲۷
تغییرات
- به روز رسانی کتابخانه اندروید به نسخه ۳.۴.۱
 - به روز رسانی کتابخانه آیاواس به نسخه ۲.۲.۱
 
نسخه ۲.۰.۰ - ۱۳۹۸/۱۰/۱۸
تغییرات
- به روز رسانی کتابخانه اندروید به نسخه ۳.۱.۲
 - به روز رسانی کتابخانه آیاواس به نسخه ۲.۱.۰
 - پشتیبانی از دریافت Referral با استفاده از فراخوانی متد 
setReferralCallbackListener. - پشتیبانی از افزودن به مقادیر آرایهای که برای دادههای سفارشی کاربر استفاده کردهاید با فراخوانی متد 
addToUserAttributeArray(attributeKey, attributeValue). - پشتیبانی از حذف مقادیر آرایهای که برای دادههای سفارشی کاربر استفاده کردهاید با فراخوانی متد 
removeFromUserAttributeArray(attributeKey, attributeValue). - پشتیبانی از حذف دادههای سفارشی کاربر با فراخوانی متد 
unsetUserAttribute(attributeKey). - پشتیبانی از تاریخ و ساعت برای مقادیری که در رویدادها و دادههای سفارشی کاربر ارسال میکنید با استفاده از شی 
Dateکه در جاوااسکریپت موجود هست. - منسوخ شدن متد 
initو جایگزینی آن با متدconfigureEnvironmentبرای راهاندازی اولیه کتابخانه چابک. - منسوخ شدن متد 
registerو جایگزینی آن با متدloginبرای ثبت ورود کاربر. - منسوخ شدن متدهای 
unregisterوregisterAsGuestو جایگزینی آنها با متدlogoutبرای ثبت خروج کاربر. - دریافت خودکار پوشنوتیفیکیشن و پیام چابک
 
ارتقا
در صورتی که میخواهید نسخه خود را ارتقا دهید، حتما مستندات مهاجرت به نسخه ۲ چابک را مطالعه کنید.
- برای نصب کتابخانه چابک نیازی به افزودن وابستگی در فایل پاد پروژه آیاواس نیست.
 - برای نصب کتابخانه چابک نیازی به افزودن وابستگی در فایل گریدل پروژه اندروید نیست.
 - برای نصب کتابخانه چابک باید پلاگین چابک و گوگل را در فایل گریدل پروژه اندروید اضافه کنید.
 - برای راهاندازی اولیه نیازی به فراخوانی متد 
initدر جاوااسکریپت نیست. - برای راهاندازی اولیه به جای متد 
initاز متدconfigureEnvironmentدر پروژههای اندروید و آیاواس استفاده کنید. - برای راهاندازی اولیه نیاز هست تا فایل تنظیمات چابک برای پلتفرمهای اندروید و آیاواس را جداگانه از پنل چابک خود دانلود کنید و هر کدام را در پروژه مربوطه قرار دهید.
 - مهاجرت از سرویس گوگل (GCM) به سرویس فایربیس (FCM) برای دریافت توکن پوشنوتیفیکیشن
 - برای راهاندازی اولیه پروژه اندروید نیاز هست تا فایل تنظیمات فایربیس را از پنل فایربیس خود دانلود کنید و در پروژه اندروید قرار دهید.
 - برای دریافت پوشنوتیفیکیشن و پیام چابک دیگر نیازی به فراخوانی هیچ متدی در پروژههای اندروید و آیاواس نیست.
 
نسخه ۱.۴.۰ - ۱۳۹۸/۰۴/۰۵
تغییرات
- به روز رسانی کتابخانه اندروید به نسخه ۲.۱۷.۰
 - به روز رسانی کتابخانه آیاواس به نسخه ۱.۲۰.۰
 - پشتیبانی از مقدار درآمد با استفاده از متد 
trackPurchase - پشتیبانی از بازخورد نوتیفیکیشن (influence) به صورت مستقیم یا غیر مستقیم
 - پشتیبانی از دیپ لینک در صورت نداشتن اپلیکیشن (deferred deep linking) با متد 
setDeeplinkCallbackListener - افزودن متد 
incrementUserAttributeبرای افزایش مقدار دادههای کمیتی کاربر - افزودن متدهای 
getUserAttributesوsetUserAttributes - افزودن متد 
setDefaultNotificationChannelبرای تغییر نام پیشفرض کانال نوتیفیکیشن (برای اندروید ۸ به بالا) 
ارتقا
- جایگزین شدن متدهای 
getUserInfoوsetUserinfoبا متدهایgetUserAttributesوsetUserAttributes 
نکته:دقت داشته باشید که برای iOS دستور زیر را انجام دهید:
cd ios
pod update
نسخه ۱.۳.۰ - ۱۳۹۸/۰۲/۲۱
تغییرات
- به روز رسانی کتابخانه اندروید به نسخه ۲.۱۶.۰
 - به روز رسانی کتابخانه آیاواس به نسخه ۱.۱۹.۰
 - افزودن متد 
setUserInfoبرای ارسال اطلاعات کاربر - افزودن متد 
setDefaultTrackerبرای ترک کمپینهای نصب - افزودن متد 
appWillOpenUrlبرای ارسال اطلاعات اتریبیوشن دیپ لینک - افزودن رویداد 
notificationOpenedبرای دریافت اطلاعات کلیک روی نوتیفیکیشن (اکشنها و رد کردن (dismiss)) - افزودن متد 
registerAsGuestبرای اپلیکیشنهایی که کاربر مهمان دارند یا میخواهند نصب با اولین بازدید شمرده شود (مانند سرویس ادجاست) 
ارتقا
اندروید:
- پشتیبانی از 
INSTALL_REFERRERبرای گوگل پلی استور 
کد زیر را به gradle اضافه کنید:
implementation 'com.android.installreferrer:installreferrer:1.0'
- برای دریافت اکشن نوتیفیکیشن، کد زیر را در کلاس 
MainApplicationمتدonCreateقرار دهید: 
//Java
@Override
public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);
    
    if (chabok == null) {
        chabok = AdpPushClient.init(
                getApplicationContext(),
                MainActivity.class,
                "APP_ID/SENDER_ID",
                "API_KEY",
                "USERNAME",
                "PASSWORD"
        );
+       //true connects to Sandbox environment  
+       //false connects to Production environment  
+       AdpPushClient.get().setDevelopment(DEV_MODE);
+       chabok.addNotificationHandler(new NotificationHandler() {
+           @Override
+           public boolean notificationOpened(ChabokNotification message, ChabokNotificationAction notificationAction) {
+               ChabokReactPackage.notificationOpened(message, notificationAction);
+               return super.notificationOpened(message, notificationAction);
+           }
+       });
    }
}
آیاواس:
- برای دریافت advertisingId باید AdSupport.framework را به 
Linked Frameworks and Librariesآن پروژه اضافه کنید - افزودن متد 
:notificationOpenedبرای ارسال رویداد اکشن نوتیفیکیشن - افزودن متد 
registerToUNUserNotificationCenterبرای دریافت اکشن نوتیفیکیشن با پیادهسازی کد زیر (برای نمایش نوتیفیکیشن چند رسانهای) این بخش از مستندات را مطالعه کنید): 
//Objective-C
+ @interface AppDelegate ()<PushClientManagerDelegate>
+ @end
@implementation AppDelegate
 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
+    [PushClientManager.defaultManager addDelegate:self];
+    [AdpPushClient registerToUNUserNotificationCenter];
  
    ...
    
    return true;
  }
+ -(void) userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {
+     [AdpPushClient notificationOpened:response.notification.request.content.userInfo actionId:response.actionIdentifier];
+ }
+ -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
+     [AdpPushClient notificationOpened:userInfo];
+ }
+ -(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
+    [AdpPushClient notificationOpened:userInfo];
+ }
+ -(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler {
+     [AdpPushClient notificationOpened:userInfo actionId:identifier];
+ }
نسخه ۱.۲.۰ - ۱۳۹۷/۰۹/۱۳
تغییرات
- حل مشکل اتصال به محیط عملیاتی
 
ارتقا
- متد 
setDevelopmentاز دسترس خارج شده است و برای تغییر محیط عملیاتی، پارامترdevModeبه متدinitاضافه شده است.init( APP_ID/SENDER_ID, API_KEY, SDK_USERNAME, SDK_PASSWORD, DEV_MODE ) - افزودن پارامتر 
devModeبه متدinitجهت تغییر محیط آزمایشی یا عملیاتی چابک - حذف پارامتر 
appNameاز متدinitializeAppinitializeApp(options) 
نسخه ۱.۱.۱ - ۱۳۹۷/۰۸/۲۳
تغییرات
- افزودن رویداد 
onSubscribeوonUnsubscribeبرای دریافت وضعیت عضویت و لغو عضویت روی کانال یا رویداد - افرودن رویداد 
onRegisterبه منظور دریافت وضعیت ثبتکاربر 
نسخه ۱.۱.۰ - ۱۳۹۷/۰۸/۲۱
تغییرات
- به روز رسانی کتابخانه اندروید به نسخه ۲.۱۴.۰
 - به روز رسانی کتابخانه آیاواس به نسخه ۱.۱۸.۰
 - حل مشکل رد کردن پرامیس در فراخوانی متدهای 
getUserIdوgetInstallationId 
نسخه ۱.۰.۳ - ۱۳۹۷/۰۸/۱۹
تغییرات
- به روز رسانی کتابخانه اندروید به نسخه ۲.۱۳.۳
 
نسخه ۱.۰.۲ - ۱۳۹۷/۰۸/۱۵
تغییرات
- به روز رسانی 
compileSdkVersionبریج اندروید به نسخه ۲۶ 
نسخه ۱.۰.۱ - ۱۳۹۷/۰۸/۱۲
تغییرات
- افزودن متد 
publishEvent - افزودن شنونده 
onEventبرای دریافتeventMessage - افزودن متدهای 
subscribeEventوunSubscribeEvent - افزودن کلید 
channelبه شئ پیام (message object) 
نسخه ۱.۰.۰ - ۱۳۹۷/۰۶/۲۶
تغییرات
- افزودن متد 
unregister - افزودن متد 
resetBadge - افزودن متدهای 
addTagsوremoveTags - افزودن متد جدید 
initبرای مقداردهی اولیه - افزودن متدهای 
getUserIdوgetInstallationId - افزودن متد 
trackبرای رصد تعامل کاربر - افزودن متد 
setDevelopmentبرای تغییر محیط چابک (آزمایشی و عملیاتی) - حل مشکل عدم وجود data
 - حل مشکل کرش کردن ریلد فایل js در بریج آیاواس
 
ارتقا
- تغییر امضای 
unsubscribeبهunSubscribe - تغییر امضای متد 
publishبه گرفتن object با {‘content’,’userId’,’channel’,’data’}. 
مدل نسخهگذاری در چابک (Semantic Versioning)
چابک از مدل نسخهگذاری MAJOR.MINOR.PATCH استفاده میکند. همه تغییرات نسخهها بلافاصله پس از انتشارشان به صورت موردی در صفحه لیست  تغییرات برای اطلاع شما اضافه میشوند. برای همین توصیه میکنیم این صفحه را حتما مطالعه نمایید. این موارد برای هر نسخه در دو بخش ارتقا (در صورت وجود ارتقا) و تغییرات برای شما نمایش داده شده است.
Patch:تغییرات در این سطح شامل Bug Fix و قابلیتهای بسیار کوچک میباشد. به روز رسانی به این نسخهها نیاز به تغییری در کد ندارد. برای آگاهی از آنها، باید بخش تغییرات را مطالعه کنید. به عنوان مثال به روز رسانی کتابخانه چابک از نسخه2.13.0به نسخه2.13.2مربوط به این سطح میشود.Minor:تغییرات در این سطح شامل قابلیتهای بزرگتر و تغییر در کارکرد (Functionality) کتابخانه میشود. در به روز رسانی به این نسخهها حتما باید بخش ارتقا و تغییرات صفحه لیست تغییرات را با دقت مطالعه کنید. در صورت بروز هر گونه مشکل در نتیجه رعایت نکردن نکات بخش ارتقا و تغییرات در به روز رسانی به نسخههای Minor، تیم چابک مسئولیتی را نمیپذیرد. توصیه میکنیم که هر سه تا شش ماه اقدام به بررسی نسخههای Minor نمایید. به عنوان مثال به روز رسانی کتابخانه چابک از نسخه2.12.1به نسخه2.13.2مربوط به این سطح میشود.Major:این سطح از تغییرات مخصوص بازنویسی و یا تغییرات اساسی در کتابخانه چابک است. در به روز رسانی به این نسخهها حتما باید بخش ارتقا و تغییرات تغییرات صفحه لیست تغییرات را با دقت مطالعه کنید. در صورت بروز هر گونه مشکل در نتیجه رعایت نکردن نکات بخش ارتقا و تغییرات در به روز رسانی به نسخههای Major، تیم چابک مسئولیتی را نمیپذیرد. بنابراین توصیه میکنیم که هر یک سال اقدام به بررسی نسخههای Major نمایید. به عنوان مثال بهروزرسانی کتابخانه چابک از نسخه1.0.1به نسخه2.13.2مربوط به این سطح میشود.