در اندروید ۶ بود که برای اولین بار در نرم افزار ها روی یک لینک کلیک میکردیم ، برنامه اجازه باز کردن و بارگذاری وبسایت در یک مرورگر خاص در برنامه را داشت که به مراتب خیلی سریعتر از WebView و حتی Chrome بود.

این کتابخانه که Chrome Custom Tabs شناخته میشود که قابلیت های شخصی سازی بسیاری را در اختیار برنامه نویس قرار میدهد.


همانطور که میبینید زمان بارگزاری در این افزونه بسیار سریعنر میباشد.

درچه زمانی از Chrome Custom Tabs استفاده میکنیم؟

در صورتی ک دربرنامه ما ، کاربر به سایتی فرستاده میشود و یا اینکه محتوای نمایشی آن سایت خارج از دامنه ی مورد استفاده ماست ، ما نیاز داریم تا از این کتابخانه به دلایل زیر استفاده کنیم:

  • بارگزاری و پردازش به صورت Native
  • دوبرابر سریعتر از WebView
  • قابلیت شخصی سازی تولبار با توجه به تنالیته برنامه ما
  • بدلیل انجام برخی پردازش ها در background قبل از بازشدن خود مرورگر،باعث بارگزاری سریعتر میشود.
  • از کوکی های به اشتراک گذاری شده ی Chrome استفاده میکند.

این کتابخانه با Chrome ورژن 45 و بالاتر از آن سازگاری دارد

و  در مورد کاربرانی که نرم افزار Chrome را روی موبایل خود نصب نکرده اند ، بدلیل اینکه از support library استفاده میکنیم بطور خودکار وبسایت ما در یک WebView بارگزاری خواهد شد.

 

لازم به ذکر است این کتابخانه ویژگی های بسیار زیادی برای شخصی سازی دارد . اما در اینجا ما یک نمونه ساده از آن را باهم مرور خواهیم کرد.

 

Pre-Warming در Chrome Custom Tabs

ما میدونیم که کروم تب خیلی سریع است اما بعضی optionهای آن هستند که باعث سریعتر شدن آن میشوند.

Pre-Warming به مرورگر کروم اطلاع میدهد تا آماده شود و initialize شود.

حتی URL هم قبل از بازشدن روی ChromeCustomTabs ست کردیم تا با کمترین تاخیر وبسایت ما بارگزاری شود.

چرا که کاربران از صبر کردن متنفرند.

شروع

برای شروع کافی ست که خط زیر را به ‌build.gradle اضافه کنیم :

dependencies {
    compile 'com.android.support:customtabs:23.1.0'
}

برای Pre-Warming نیازمند این هستیم که ‌CustomTabsService را bind و CustomtabsClientرا در callBack آن initialize کنیم.

mCustomTabsServiceConnection = new CustomTabsServiceConnection() {
          @Override
          public void onCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient customTabsClient) {

              //Pre-warming
              mClient = customTabsClient;
              mClient.warmup(0L);
              mCustomTabsSession = mClient.newSession(null);
          }

          @Override
          public void onServiceDisconnected(ComponentName name) {
              mClient = null;
          }
      };

و پس از آن سرویس را bind میکنیم.

CustomTabsClient.bindCustomTabsService(MainActivity.this, CUSTOM_TAB_PACKAGE_NAME, mCustomTabsServiceConnection);

CUSTOM_TAB_PACKAGE_NAME در واقع نام پکیج کروم میباشد که آن را برابر با com.android.chrome تنظیم میکنیم.

لازم به ذکر است تنظیمات Pre-Warming تاثیر مستقیمی روی سرعت و زمان بارگزاری دارد.

با پایان یافتن قسمت Pre-Warming مرحله بعدی تعریف ننظیمات  ChromeCustomTab میباشد که با استفاده از CustomTabsIntent Builder خواهد بود.

customTabsIntent = new CustomTabsIntent.Builder(mCustomTabsSession)
              .setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary))
              .setShowTitle(true)
              .build();

تنظیمات بسیار دیگری برای Builder وجود دارد که پیشنهاد میکنم حتما آنهارا تست کنید.من در اینجا فقط رنگ تولبار و نمایش URL را استفاده کردم.

همچنین میتوانید با setExitAnimations() و setStartAnimations() انیمیشن هایی برای نمایش و پایان نمایش ChromeCustomTabs ی تنظیم کنید.

در نهایت با اجرای خط کد زیر در متد onClick یک ویو میتوانید مرورگر را مشاهده کنید:

customTabsIntent.launchUrl(MainActivity.this, Uri.parse(URL));

مقاله اصلی : لینک

در آینده کد این مطلب روی Github.com قرار داده خواهد شد.

امیدوارم این مطلب مفید واقع شده باشد.

پاینده باشید.