はじめに
こんにちは、東京アプリケーションシステム 第2ソリューション部のH.Tです。
今回はXamarinアプリのターゲットをAndroid13へ変更したときの対応をメモしたいと思います。
ターゲットフレームワークについて
ターゲットフレームワークはアプリがビルド時にコンパイルするAndroidのフレームワークバージョンです。
GooglePlayへアプリを新規で公開、または最新版を公開するためには今年中にターゲットフレームワークを Android13 (API 33) 以上に変更する必要があります。
以下はGoogleが公開している要件です。
- 2023年 8月 -新規公開するアプリはAndroid13以上が必須に
- 2023年11月 -最新版アプリの公開(アップデート)はAndroid13以上が必須に
※未対応のアプリを提出しようとすると、GooglePlayConsoleへアップロードする時に「ターゲットを〇〇以上に変更しなさい」と言われて審査してもらえません。
Android13での変更点
当方に影響があった変更点がこちらでした。
権限周りの部分で影響が出ていました。
全ての変更点はこちらの「アプリ向けの動作の変更点」から。
対応内容
通知に関する実行時の権限
これまでAndroidでは、アプリをインストールした時点で通知の権限はデフォルトで許可されていましたが、
Android13からはアプリからプッシュ通知を受け取るためにはユーザ自身が権限を許可する必要があります。
そのままではAndroid13ユーザが、ターゲットをAndroid13へ変更したアプリをインストールした場合、ユーザが直接アプリ設定画面を開いて権限を許可しないとプッシュ通知が受け取れなくなってしまいます。
対策として、通知を許可してもらうためのパーミッションダイアログをアプリ起動時に出す処理を追加しました。
既に当該ダイアログを出しているiOSと同じように、DependencyServiceを使ってXamarin.Android側でダイアログを出します。
ダイアログを出す処理など細かいところは省きます。
きめ細かいメディア権限
Android12までは端末内の写真、動画、音声ファイルをストレージから参照するための権限は”READ_EXTERNAL_STORAGE”1つに集約されていました。
Android13からは当該権限がさらに細分化され、”READ_MEDIA_IMAGES”,”READ_MEDIA_VIDEO”,”READ_MEDIA_AUDIO”の3つに分けられました。
それぞれ”写真”,”動画”,”音声ファイル”の権限になります。
これについては実行中のAndroidバージョンをチェックし、Android13以上だった場合は新しい権限を要求するよう処理を変更しました。
新しい権限から必要なものをマニフェストに追加します。
androidバージョンに応じて必要な権限を要求します。
1 2 3 4 5 6 7 8 |
if(Device.RuntimePlatform.Equals(Device.Android) && int.Parse(DeviceInfo.VersionString) >= 13) { // Android13以上の権限要求処理 } else { // Android13未満の権限要求処理 } |
まとめ
以上がターゲットフレームワークをAndroid13にするために対応した内容になります。
ターゲットがAndroid12以上必須となったのが丁度1年前の2022年8月(新規公開)と2022年11月(アップデート)だったので、今後は年1回以上の頻度でターゲットの変更が必要になりそうです。
前回Android12の時は2022年12月までに申告すればターゲット変更未対応のアプリでも審査してくれたようですが、今回はどうなんでしょうか?
(ユーザ影響度の高い緊急リリースのための免除だと思うので、最初からあてにすべきではないと思いますが)
進化の早いスマホOS、仕様変更や規約改定にはアンテナを張り続けないといけないと、痛感した1年でした。