asken テックブログ

askenエンジニアが日々どんなことに取り組み、どんな「学び」を得ているか、よもやま話も織り交ぜつつ綴っていきます。 皆さまにも一緒に学びを楽しんでいただけたら幸いです!

targetSDKVersion 33(Android OS 13)に対応した話

はじめに

こんにちは。システム部の大澤です。 普段は北米版あすけんのAndroid/iOSアプリを開発しています。 最近は、北米版あすけんのAndroidアプリをメインで開発しています。

弊社アプリでAndroid OS 13を使用しているユーザーが増えてきたので対応する必要が出てきました。 Androidアプリで依存しているライブラリもtargetSDKVersion 33を指定しないとアップデートできない状態になっていました。 前述の理由により北米版あすけんのAndroidでtargetSDKVersionを33(Android OS 13)に更新しました。 更新時にやったことについて以下にまとめました。

targetSdkVersionとは

targetSdkVersionとはアプリがターゲットとするAPIレベルを示す整数。設定しなかった場合、デフォルト値はminSdkVersionで指定された値になります。

https://developer.android.com/guide/topics/manifest/uses-sdk-element?hl=ja

通知許可のリクエスト

Android OS 13のデバイスでは、targetSdkVersionを32までに設定すると、初回起動時に通知許可のダイアログが表示されます。 targetSdkVersionを33に変更することでAndroid OS 13のデバイスで通知許可を出すタイミングをコントロールできるようになります。 ユーザーに許可してもらうためには、まず通知を受け取ることのメリットを提示することが推奨されています。 その後、許可ダイアログを表示して許可を求めます。

通知に関する実行時の権限  |  Views  |  Android Developers

AndroidManifest.xmlにuses-permissionを追加

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

通知許可のリクエスト処理を追加

class MainActivity : AppCompatActivity() {
    private val requestPermissionLauncher = registerForActivityResult(
        ActivityResultContracts.RequestPermission()
    ) { isGranted: Boolean ->
        // 通知の許可されたかどうかのチェック
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
         // OS バージョン確認
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
            // Android OS 13 未満は通知権限不要
            return
        }
        val notificationPermission = ContextCompat
            .checkSelfPermission(this, android.Manifest.permission.POST_NOTIFICATIONS)
        if (notificationPermission == PackageManager.PERMISSION_GRANTED) {
            // 既に通知許可済み
        } else {
            val notificationRationale = shouldShowRequestPermissionRationale(android.Manifest.permission.POST_NOTIFICATIONS)
            if (notificationRationale) {
                // 必要がある場合は、その理由を説明するためのUIを明示的に表示する
            } else {
                // 通知の許可をリクエストする
                activityResultLauncher?.launch(android.Manifest.permission.POST_NOTIFICATIONS)
            }
        }
    }
}

Google Play Consoleでの申請

  • 広告IDを使っていると対応が必要です。未対応な場合は申請ができなくなります。
    <uses-permission android:name="com.google.android.gms.permission.AD_ID" />

  • Google Play Consoleのポリシーとプログラム -> アプリのコンテンツ -> 広告 IDで設定します。 該当する項目をチェックすると申請できるようになります。

まとめ

  • 対応してみたところ、当社のアプリには影響が少なく、作業はすぐに終わりました。
  • Android OS 13からデフォルトで通知許可がOFFになりました。多くのユーザーに通知を許可してもらうためには、取り組みが必要だと思います。

お知らせ

askenでは、エンジニアを募集しています。

www.asken.inc