[この記事は Laurence Moroney、Android Wear デベロッパー アドボケートによる Android Developers Blog の記事 "What’s new in Google Play services 8.3" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

Google Play サービス 8.3 では新たな機能が多数追加されたので、それについてご紹介します。

今回のリリースの大きな特徴は、ユーザー認証の強化です。まず、Google Sign-In 関連の API を更新し、ユーザー エクスペリエンスが簡潔になるように実装を簡略化しました。新しい Google Sign-In では、デバイス アカウントのパーミッションが不要です。Marshmallow 向けにアプリの開発を進めているデベロッパーには大変便利になりました。API には、最新の Google ブランディングも反映しています。Google Play サービス 8.3 を使用する際、デフォルトのスコープでは SignInButton はこのような外観でした。
以前なら、ユーザーは「サインイン」ボタンにタッチしてから、複数のステップ(アカウントの選択、プロファイル情報へアクセスするためのパーミッション付与、場合によっては Google+ アカウントの作成など)を実行しなければなりませんでした。ところが Google Play サービス 8.3 では、ワンタップするだけで基本プロファイルにアクセスできます。

新しい API に関するドキュメントはこちらでご確認いただけます。

また、複数のデバイスで同時にサインインしやすくするため、Google Sign-In を使っている場合でも、従来のパスワードベースの認証を使っている場合でも、Smart Lock API は重要な更新を受信します。また、新しい API メソッドを追加しました。このメソッドは、ユーザーがサインイン用に使用しているメールアドレスをサインイン用のフォームにあらかじめ入力しておく、またはフォームが表示された際にユーザーの入力を支援するような設定を行うためのダイアログを表示するためのものです。getHintPickerサンプル コード)をご確認ください。このメソッドでは、どのデバイスからもパーミッションを受け取る必要はなく、メソッドがデバイス上のアカウント情報をサインイン情報として受信していた、ピッカーに代わる役割を果たします。したがって Marshmallow では、デバイスからのアクセスにはランタイム パーミッションが必要となります。

ヒント情報を使用すれば、サインイン用のフォームに必要な情報、すなわち名前、メールアドレス、プロフィール画像などを、サインイン時にワンタップで一気に入力することができます。あるいはメールアドレスを使って、ユーザーをサインインやサインアップの操作にスマートに誘導することもできます。ユーザーが選択したエントリがデバイス上のアカウントと一致する場合、検証済みのメールアドレスを Google からヒント情報として送信して、メールアドレスの検証とユーザー認証を省略できる仕組みをシステムに実装するのが一番望ましい方法です。ID Token は、Google Sign-In でも採用しています。

Google Play サービスには、ユーザーの所在地を特定するために、GPS、WiFi、携帯電話の無線通信用信号など、内蔵している位置情報のセンサーから情報を抽出し、使いやすい API に統合して格納する、位置情報統合(FLP)機能があります。バッチ化については、FLP を改善しました。バージョン 8.3 より古いバージョンでは、位置情報のバッチ API を使用して FLP でネットワーク トラフィックを統合し、使用電力を節約していました。ただし、アプリが位置情報リクエストのバッチを削除した場合、バッチはクリアされていました。これを防ぐために、バッチ化した位置情報を直ちに返す API を追加しました。詳細は、FusedLocationProviderApiflushLocationsremoveLocationUpdates メソッドの呼び出しをご確認ください。

App Invites は、ユーザーが知人とアプリを共有できるようにするテクノロジーです。Google Play サービス 8.3 には、App Invites を組み込んでアプリをビルドすると、コーディングをかなりシンプルにできるよう更新されました。AppInvite.AppInviteApi.getInvitation() メソッドが使えるようになりました。このメソッドは、ディープリンク アクティビティの起動に使用する ResultCallback をセットアップするので、コードがシンプルになります。

Play Game サービスの Player Stats API もアップデートされています。最新版には、ゲームを辞めてしまいそうなプレーヤーを表す、新しいシグナルが追加されました。このシグナルを利用して、辞めそうなプレーヤーに通常価格よりお得なパワーアップ アイテムを販売するなど、ユーザーの定着率を上げる特別プロモーションを提供できます。

最後に、ウェアラブル端末対応のアプリを開発している場合、優れたユーザー エクスペリエンスを提供するには、バッテリーの寿命と電力利用の最適化が極めて重要になることはご存じでしょう。Google Play サービス 8.3 では、緊急時にもデータ アイテムを同期できる DataApi を更新しました。データ アイテムに優先度が追加されたので、同期を実行するタイミングを指定できるようになりました。遠隔操作アプリのように、すぐに同期しなければならないアプリを制作されている場合、setUrgent() を呼び出すと、同期を直ちに実行することができます。連絡先を更新するアプリであれば、多少の同期遅れを許可することができます。緊急ではない DataItems は 30 分まで遅延できますが、2~3分以内に届くことがほとんどです。デフォルトでは優先度は「低」に設定されています。したがって、以前と同様に即時の同期を実行したい場合は、setUrgent() を呼び出す必要があります。

Android Wear API のリスナーに、フィルターが追加されたため、リスナーは変更のサブセットのみを携帯端末とウォッチの両方で受け取れるようになりました。Android の Manifest ファイルに登録済みのリスナーはフィルターで抽出され、プロセスの開始が必要なイベントのみを受信します。それ以外のイベントは、addListener() などのメソッドで追加された、接続中のリスナーに送信されます。リスナーが関心を持っていないイベントを除去する手間が省けるので、アプリやシステムの効率が上がります。

今回の Google Play サービスのリリースについての説明は、以上です。詳細は、Google デベロッパーサイトをご覧ください。

Posted by Eiji Kitamura - Developer Relations Team