gpt4 book ai didi

java - Android 应用程序未通过 Firebase FCM 接收推送通知

转载 作者:行者123 更新时间:2023-12-01 19:23:45 32 4
gpt4 key购买 nike

更新1:

当应用程序位于屏幕上时,仅在前台时不会收到通知。如果应用程序正在屏幕上运行,则会发生以下情况:

这就是我在手机屏幕上看到的内容。

enter image description here

这是日志猫

2019-12-14 17:49:12.959 26000-26083/com.maunexus D/AudioTrack: stop(124): called with 438244 frames delivered
2019-12-14 17:49:18.006 26000-26215/com.maunexus D/FA: Logging event (FE): notification_receive(_nr), Bundle[{firebase_event_origin(_o)=fcm, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=2966358034792091456, message_device_time(_ndt)=0, _nmc=display, message_name(_nmn)=Yeeey!, message_time(_nmt)=1576338559, message_id(_nmid)=6989073632392201936}]
2019-12-14 17:49:18.191 26000-26215/com.maunexus D/FA: Logging event (FE): notification_foreground(_nf), Bundle[{firebase_event_origin(_o)=fcm, firebase_screen_class(_sc)=MainActivity, firebase_screen_id(_si)=2966358034792091456, message_device_time(_ndt)=0, _nmc=display, message_name(_nmn)=Yeeey!, message_time(_nmt)=1576338559, message_id(_nmid)=6989073632392201936}]
2019-12-14 17:49:18.239 26000-26215/com.maunexus D/FA: Connected to remote service

我正在尝试通过 Firebase FCM 服务为我的应用实现推送通知服务,但不幸的是,它不起作用。

发生了什么,应用程序中没有任何内容,它不会崩溃,但也没有收到我从 Firebase 控制台发送的任何通知。

我将附加我的应用程序中的所有相关文件。

MainActivity.java

package com.maunexus;

import android.app.Activity;

import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.CookieManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;


public class MainActivity extends AppCompatActivity {

private WebView webView;
Activity activity;
private static final String TAG = "MainActivity";


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

activity = this;


webView = (WebView) findViewById(R.id.webviewid);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
}
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
webView.getSettings().setSupportMultipleWindows(false);
webView.getSettings().setSupportZoom(false);
webView.setVerticalScrollBarEnabled(false);
webView.setHorizontalScrollBarEnabled(false);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("https://pari365.mg");


FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
@Override
public void onComplete(@NonNull Task<InstanceIdResult> task) {
if (!task.isSuccessful()) {
//To do//
return;
}

// Get the Instance ID token//
String token = task.getResult().getToken();
String msg = getString(R.string.fcm_token, token);
Log.d(TAG, msg);

}
});


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.super_menu, menu);
return super.onCreateOptionsMenu(menu);
}


@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_back:
onBackPressed();
break;

case R.id.menu_forward:
onForwardPressed();
break;

case R.id.menu_refresh:
webView.reload();
Toast.makeText(this, "Reloading... Please Wait!", Toast.LENGTH_SHORT).show();
break;


}
return super.onOptionsItemSelected(item);
}


private void onForwardPressed() {
if (webView.canGoForward()) {
webView.goForward();
} else {
Toast.makeText(this, "Already there! ;)", Toast.LENGTH_SHORT).show();
}
}

public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
}
}
}

MyFirebaseMessagingService.java。

.getTitle().notify() 方法中出现两个警告:

方法调用“notify”/“getTitle”可能会产生 NullPointerException

   package com.maunexus;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TaskStackBuilder;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.media.RingtoneManager;
import android.os.Build;


import androidx.core.app.NotificationCompat;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

import org.jetbrains.annotations.NotNull;


public class MyFirebaseMessagingService extends FirebaseMessagingService{

@Override
public void onMessageReceived(@NotNull RemoteMessage remoteMessage) throws NullPointerException {
super.onMessageReceived(remoteMessage);
//Log.i("#DEBUG#", remoteMessage.toString());

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "channel_id")
.setContentTitle(remoteMessage.getNotification().getTitle())
.setContentText(remoteMessage.getNotification().getBody())
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setStyle(new NotificationCompat.BigTextStyle())
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setSmallIcon(R.mipmap.ic_launcher)
.setAutoCancel(true);

NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

notificationManager.notify(0, notificationBuilder.build());
}

private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
"channel_id",
"Channel name",
NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Channel description");

// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}
}
}

}

build.Grandle(应用程序)

apply plugin: 'com.android.application'

android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.maunexus"
minSdkVersion 21
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.firebase:firebase-core:17.2.1'
implementation 'com.google.firebase:firebase-analytics:17.2.1'
implementation 'com.google.firebase:firebase-messaging:20.1.0'
implementation 'com.google.firebase:firebase-inappmessaging-display:19.0.2'
implementation 'com.android.support:multidex:1.0.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
apply plugin: 'com.google.gms.google-services'

以下行已添加到 strings.xml

 <string name="fcm_token">FCM Token: %s</string>

最后,我从 logcat 中发现了几行相关内容

2019-12-13 23:41:25.894 10009-10009/com.maunexus I/FirebaseInitProvider: FirebaseApp initialization successful

2019-12-13 23:41:29.181 10009-10074/com.maunexus I/FIAM.Headless: Successfully fetched 0 messages from backend
2019-12-13 23:41:31.796 10009-10009/com.maunexus I/chromium: [INFO:CONSOLE(27)] "AltenarSportsbook", source: https://sb1client-static-altenar.biahosted.com/static/skins/pari365.js?v=aca125c500d0eed54e11a4c03bd17a08 (27)
2019-12-13 23:41:37.425 10009-10127/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:41:37.474 10009-10127/com.maunexus I/chatty: uid=10134(com.maunexus) Chrome_InProcGp identical 4 lines
2019-12-13 23:41:37.474 10009-10127/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:41:37.504 10009-10111/com.maunexus I/libOpenSLES: Emulating old channel mask behavior (ignoring positional mask 0x3, using default mask 0x3 based on channel count of 2)
2019-12-13 23:41:47.509 10009-10111/com.maunexus D/AudioTrack: stop(53): called with 440356 frames delivered

2019-12-13 23:59:29.115 10438-10438/? E/com.maunexus: Unknown bits set in runtime_flags: 0x8000
2019-12-13 23:59:34.099 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:34.100 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:34.335 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:34.335 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:34.552 10438-10498/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:34.553 10438-10498/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:35.345 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:35.349 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:44.720 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:44.763 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:45.097 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef
2019-12-13 23:59:45.098 10438-10553/com.maunexus E/eglCodecCommon: glUtilsParamSize: unknow param 0x000088ef

非常感谢您抽出时间来检查这个问题。请帮助我解决此处的问题。

最佳答案

在发布通知之前尝试创建通知 channel :

这只是一个示例,请为 channel ID 创建常量,并为名称和描述创建资源。

MyFirebaseMessagingService.java

package com.maunexus;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.media.RingtoneManager;
import android.os.Build;

//import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.app.NotificationCompat;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class MyFirebaseMessagingService extends FirebaseMessagingService {
RemoteMessage remoteMessage;

@Override
public void onMessageReceived(@Nullable RemoteMessage message) {
super.onMessageReceived(remoteMessage);

createNotificationChannel();
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "channel_id")
.setContentTitle(remoteMessage.getNotification().getTitle())
.setContentText(remoteMessage.getNotification().getBody())
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setStyle(new NotificationCompat.BigTextStyle())
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setSmallIcon(R.mipmap.ic_launcher)
.setAutoCancel(true);

NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

notificationManager.notify(0, notificationBuilder.build());
}


private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(
"channel_id",
"Channel name",
NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Channel description");

// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
NotificationManager notificationManager = getSystemService(NotificationManager.class);
if (notificationManager != null) {
notificationManager.createNotificationChannel(channel);
}
}
}
}

关于java - Android 应用程序未通过 Firebase FCM 接收推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59330194/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com