Android8の実機でPush通知が表示されません。
【背景】
サーバ(PHP)からFCM経由でPush通知を受信するアプリを開発しています。
開発中はTaragetSDKVersionを25に設定していましたが、Googleに申請するにあたって26に変更しました。
AndroidStudio2.3.2を利用しています。
【やったこと】
「通知チャンネル」が必須ということで、アプリ起動時に以下のコードを記述しました。
設定-アプリ-通知において作成されたチャンネルが表示されていることを確認しました。
Java
1 //Application.onCreate 内 2 if (Build.VERSION.SDK_INT < 26) { 3 return; 4 } 5 NotificationManager notificationManager = 6 (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 7 NotificationChannel channel = new NotificationChannel("default", 8 "メッセージ通知", 9 NotificationManager.IMPORTANCE_HIGH); 10 channel.setDescription("メッセージ通知"); 11 channel.enableLights(true); 12 channel.enableVibration(true); 13 channel.setLightColor(Color.RED); 14 notificationManager.createNotificationChannel(channel);
またFCMサービスのonMessageReceivedでは以下のようにチャンネルを指定するようにしました。
Java
1 //通知タップ時の起動インテント 2 Intent intent = new Intent(this, MainActivity.class); 3 intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 4 PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,PendingIntent.FLAG_ONE_SHOT); 5 6 Context context = getApplicationContext(); 7 8 //通知オブジェクト準備 9 Notification notification = new NotificationCompat.Builder(context) 10 .setSmallIcon(R.drawable.ic_stat_name) 11 .setAutoCancel(true) 12 .setDefaults(Notification.DEFAULT_ALL) 13 .setContentIntent(pendingIntent) 14 .setContentTitle(title) 15 .setContentText(body) 16 .setChannel("default") 17 .build(); 18 19 //通知実行 20 NotificationManagerCompat manager = NotificationManagerCompat.from(getApplicationContext()); 21 22 manager.notify(1, notification);
デバッグしてみるとちゃんとロジックは通っているようですが、実機上に何の反応もありません。
もれている箇所がありましたらお教え願います。
ちなみに、TargetSDKVersionを25する、あるいはAndroid8未満の実機では正常に通知されます。
回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。