Firebaseクラウドメッセージの通知をデバイスが受信していない
2023-09-03 14:55:12
質問
FireBase Cloud Messaging で、デバイスからトークンを取得し、Google Firebase 通知コンソールから通知テストを送信しますが、通知が記録されず、android 仮想デバイスにプッシュされないという問題が発生しました。 FCMのドキュメントは、ほとんど私が持っているコードと同じで、firebaseでプッシュ通知を動作させるために他に何をしなければならないかについては、ほとんど書かれていません。 ドキュメントで指定されているセットアップ情報(build.gradleの追加、Google Playサービスのインストールなど...)をすべて行ったのですが、まだメッセージが生成されない状態です。 通知をプッシュした直後に "I/FA: Tag Manager is not found and thus will not be used" というワンタイムエラーが出ますが、出力されるデータはこれだけで、googleで調べてもタグマネージャーの要件とFCMに関するものは見つかりませんでした。 logcatやデバイスにプッシュ通知を受け取れないのは、コードのどこが悪いのでしょうか?さらに役立つ情報があれば教えてください。 ありがとうございます。
NotificationGenie.java
public class NotificationGenie extends FirebaseMessagingService {
private static final String TAG = "Firebase_MSG";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// TODO(developer): Handle FCM messages here.
// If the application is in the foreground handle both data and notification messages here.
// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
sendNotification(remoteMessage.getNotification().getBody());
Log.d(TAG, "From: " + remoteMessage.getFrom());
Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
}
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, PostLoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.tf2spyprofile)
.setContentTitle("FCM Message")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.test.movile_android">
<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".LoginActivity"
android:label="@string/title_activity_login">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".DashBoardActivity"
android:label="@string/title_activity_dash_board"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<activity
android:name=".NewOrderActivity"
android:label="@string/title_activity_dash_board"
android:theme="@style/AppTheme.NoActionBar">
</activity>
<activity
android:name=".PostLoginActivity"
android:label="@string/title_activity_dash_board"
android:theme="@style/AppTheme.NoActionBar">
</activity>
</application>
<service
android:name=".NotificationGenie">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
どのように解決するのですか?
アプリケーションタグの外側にサービスを配置しています。下をこのように変更してください。
<service
android:name=".NotificationGenie">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
</application>
関連
-
[解決済み] Firebaseでアプリがバックグラウンドにあるときの通知を処理する方法
-
[解決済み】Firebase Console を使用せずに Firebase Cloud Messaging 通知を送信するには?
-
[解決済み] Firebase Cloud MessagingのAPI KEYはどこにありますか?
-
[解決済み] 新Firebase Cloud Messagingシステムによる通知アイコンについて
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] Android - Snackbar vs Toast - 使い方と違い。
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] アダプタからActivityメソッドを呼び出す
-
[解決済み] 文字列リソースにHTML?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 新Firebase Cloud Messagingシステムによる通知アイコンについて
-
[解決済み] アンドロイドフラグメント onRestoreInstanceState
-
[解決済み] プログラム的に電話をかけるには?
-
[解決済み] handler.postDelayed()を停止する。
-
[解決済み] Android Studioの「未実装メソッドの追加」機能
-
[解決済み] 通知をクリックした後にアプリケーションを開く
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] Android Lintが翻訳されていない文字列を訴えないようにする。
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] HttpURLConnectionを使ったPOSTによるファイル送信