7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FLINTERSAdvent Calendar 2022

Day 17

Android 13の新機能と必要な対応について

Last updated at Posted at 2022-12-16

この記事はFLINTERS Advent Calendar 2022の17日目です。

こんにちは!株式会社FLINTERSでGANMA!のAndroidアプリの開発をしています大塚です。今回は、2022年の今年にリリースされたAndorid 13(API Level 33)の新機能やアプリでの必要な対応についてGANMA! Androidアプリで対応したことを中心にご紹介したいと思います。

広告ID

Google Play開発者サービスの広告IDを使用し、Android 13(API Level 33)以上をターゲットとしているアプリでは、AndroidManifest.xml内で以下の権限を宣言する必要があります。

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

アプリがAndroid 13以上をターゲットとしていて、この権限を宣言していない場合、広告IDは自動的に削除され、00000000-0000-0000-0000-000000000000のように0を羅列した文字列が返されるようになってしまいます。

アプリで使用しているSDKのマニフェストで既に広告の権限が宣言されている場合は、その権限がアプリのマニフェストファイルに統合されるため、アプリで宣言しなくてもOKです!

Notification Runtime Permission

Android 13からRuntime PermissionにPOST_NOTIFICATIONSが追加されました。Runtime Permissionとは、ユーザーの位置情報や連絡先情報のようなデータや、カメラ、マイクといった端末の機能を使用するためのアクセス権限のことです。Android 13からRuntime Permissionに通知権限が追加され、アプリからユーザーに通知を送信するためにはこの権限の許可を取得する必要があります。

predictive-back-gesture

Android 13を搭載した端末で、Android 13未満をターゲットしているアプリをインストールした場合、アプリの通知はデフォルトでオフになり、以下のタイミングで通知ダイアログが表示されます

アプリが 12L(API レベル 32)以下をターゲットとする場合、権限ダイアログは、通知チャンネルの作成後にアプリが最初にアクティビティを開始したとき、または、アプリがアクティビティを開始して最初の通知チャンネルを作成したときに表示されます。通常、これはアプリの起動時です。

Android 13をターゲットに設定することで、開発者の意図したタイミングで権限ダイアログを表示することができるようになるため、対応がまだされていない場合は早めの対応をお勧めします。

Notification Runtime Permissionに対応するためには、まずアプリをAndroid 13以上にターゲットした上で、以下をAndroidManifest.xmlに記述します。

<manifest ...>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
</manifest>

その他の対応については他のRuntime Permissionの対応と同様ですので、詳細はアプリの権限をリクエストするをご覧ください。

Predictive Back Gesture (予測型「戻る」ジェスチャー)

Android 13からPredictive Back Gesture (予測型「戻る」ジェスチャー)という新機能が追加されました。Android 10 (API level 29)でジェスチャーナビゲーションが追加されましたが、今回の新機能ではジェスチャーでアプリを閉じる場合に遷移先の画面をプレビュー表示して、そのままアプリを閉じるか、現在の画面に止まるかが選択できるようになりました。

predictive-back-gesture

これは機能はオプトインの機能なので、適用するにはAndroidManifest.xmlに以下の設定を記述する必要があります。GANMA!アプリでも対応をしました!

<application
    ...
    android:enableOnBackInvokedCallback="true"
    ... >
</application>

また、この機能を追加する場合にActivity#onBackPressed()KeyEvent#KEYCODE_BACKが正常に機能しなくなるため、それら使ってバックイベントをハンドリングしている場合は、OnBackPressedCallBackOnBackInvokedCallbackのAPIを使用した実装に変更する必要があります。

まとめ

以上、Android 13対応について、GANMA! Androidアプリで対応したことを中心に紹介させていただきました。個人的には通知が許可制になったことで、アプリインストールするたびに、毎回設定から通知の設定をしにいかなくても良くなったことがAndroidユーザーとして一番嬉しい変更だなと感じています!

今回紹介したこと以外にも

などの多くの新しい機能が追加されています!詳しくは Android 13 の機能と変更点のリストにまとまっていますので、そちらをご覧ください。

参考

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?