Android 8.0以降 ローカルプッシュ通知がされない不具合対応について

Android 8.0以降からは新しく通知チャンネルが機能が追加されたため、
その対応をする必要がありました。
ただし、Android8.0未満は通知チャンネル機能がないため、
Android8.0未満の処理も必要である。

Android 8についての公式ドキュメント
https://developer.android.com/training/notify-user/channels.html

追加したコード内容
NotificationReceiver.java

    // create notification builder
    NotificationCompat.Builder builder;
    // Android 8 (Oreo) への対応
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        // Create channel to show notifications.
        //通知チャンネル名
        CharSequence name = title;    
        //チャンネルのメッセージ
        String description = message;    
        //チャンネルの重要度の設定
        int importance = NotificationManager.IMPORTANCE_DEFAULT;  
        //第一引数は通知チャンネルのID 任意で問題ない。
        NotificationChannel channel = new NotificationChannel("default", name, importance);
        
        //チャンネルの説明を入れる
        channel.setDescription(description);    
        
        NotificationManager notificationManager = context.getSystemService(NotificationManager.class);
        notificationManager.createNotificationChannel(channel);

        //コンストラクタ 第2引数はNotificationChannelのコンストラクタの第1引数を渡す
        builder = new NotificationCompat.Builder(context,"default");
    }else{
        //以下はAndroid 8未満の対応
        //コンストラクタの第2引数にチャンネルを渡すとエラーが発生します。
        builder = new NotificationCompat.Builder(context);
    }
    
    //通知に必要なNotificationManagerCompatを生成する
     NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);

    //通知を発行する。
    //requestCodeはレスポンスコードを指定しています。
    notificationManagerCompat.notify(requestCode, builder.build());
    
    
    



build.gradle


    android {
        ========================追加開始========================
        compileSdkVersion 28        
        buildToolsVersion "28.0.0"    
        ========================追加終了========================

        defaultConfig {
            ~以下略~
            ========================追加開始========================
            targetSdkVersion 28        
            ========================追加終了========================
            ~以下略~
        }
        ~以下略~
    }

    dependencies {
        ~以下略~
        ========================追加開始========================
        implementation "com.android.support:support-compat:28.0.0"    //gradleにv4 compatライブラリを追加する
        ========================追加終了========================
        ~以下略~
    }

※補足
targetSdkVersionを25にするとAndroid 8.0でもローカル通知が来ますが、Google PlayにAPKをアプロードする時にエラーになる可能性があるので、推奨はできない。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


最近のコメント