Chrome Custom Tabs を とりあえず数行で使う

スマホでブラウザを起動する, っての最近では面倒.

LINEとかメッセージでリンクを送ってくる人とか.

20150910-215123

さりげなく開かずにテキトーな会話を続けたりします.

考えてみると「なんかブラウザって重いしトロい」から.

そこで, 最近登場したのが「Chrome Custom Tabs」というしくみ.

Chrome Custom Tabs - Google Chrome

performance

表示までが非常に高速化されてるようにに見える.

実装しようとサンプルをダウンロードしてみる.

GoogleChrome/custom-tabs-client

アプリ内モジュールやヘルパーやプロセス間の通信など
依存関係があるのでわかりづらい.

とりあえずシンプルにURLを渡すだけでで起動してみたいだけなので以下で.

build.gradle

compile 'com.android.support:customtabs:23.0.1'

サンプル内モジュール customtabs 以下は不要.

コピペするクラス

CustomTabsHelper
KeepAliveService
CustomTabActivityHelper
WebViewFallback

shared というモジュールは作らずベタクラスとしてコピペ.
アプリ内モジュール依存はなしで.

起動

...
Uri uri = Uri.parse("http://google.com/");
CustomTabsIntent customTabsIntent =
    new CustomTabsIntent.Builder().build();
CustomTabActivityHelper
    .openCustomTab(this, customTabsIntent, uri, new WebViewFallback());
...

UIカスタマイズはしない. するならここで.

WebViewFallback#openUri()

    ...
    //Intent intent = new Intent(activity, WebViewActivity.class);
    //intent.putExtra(WebActivity.EXTRA_URL, uri.toString());
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(uri);
    activity.startActivity(intent);
    ...

Chromeアプリ (stable/beta/dev) をインストールしてない場合は,
デフォルトブラウザなどに暗黙的に投げる.

で ?

起動はできる.
が, これだけでは恩恵にありつけない.

20150910-224352

サイト内検索などはできるようにはなるが
「なんかブラウザって重いしトロい」が解消せず.

以下の機能があるという.

Pre-warming of the Browser in the background, while avoiding stealing resources from the application.

Providing a likely URL in advance to the browser, which may perform speculative work, speeding up page load time.

これを使わないと意味ないな...

(つづく)


API-23 で「can’t find referenced class org.apache.http.*」

API-23 に上げるとサードパーティなライブラリ群に対して, こんな...

error

削除されているのですね.

API_Differences_between_22_and_23

API Differences between 22 and 23

各ライブラリが対応されるまではどうしたらよいのか.

...
android {
       useLibrary 'org.apache.http.legacy'
       ...
}
...

Apache HTTP connection with Android 6.0 (Marshmallow) - Stack Overflow

なんだか気持ち悪い.

動作の変更点 | Android Developers


C2DM 終了 GCMへの移行は10月までに

こんなの表示されてます. デベロッパーコンソール.

c2dm_gcm

C2DM のサポートがまもなく終了 Android Cloud to Device Messaging(C2DM)のサポートが完全に終了し、以降のサポートが提供されなくなることを 4 月に発表いたしました。C2DM は、次世代の C2DM である Google クラウド メッセージング(GCM)に代わります。C2DM を使用しているアプリの GCM への移行に十分な時間をかけられるよう、移行期限は 10 月まで延長されています。

ClientLogin for Google Cloud Messaging (GCM) has been shut down - Google グループ

該当するかどうかは, 「gcm.jar」 を利用しているかをみればよい.と.

C2DM をまだ使用しているアプリがある場合は、できる限り速やかに GCM に移行してください。2015 年 10 月までにアプリを最新の GCM ライブラリに移行しないと、C2DM プッシュ メッセージングが正常に機能しなくなります。C2DM を使用しているかどうかは、実装で gcm.jar ライブラリまたは GCM ヘルパー ライブラリを使用しているかで判断できます。

取得したトークンの文字列自体ははそのまま使えるのだろうと思います.

Cloud Messaging   |   Google Developers

変更の詳細手順は以下から.

Try Cloud Messaging for Android   |   Cloud Messaging   |   Google Developers