相关疑难解决方法(0)

带有新Firebase云消息传递系统的通知图标

昨天谷歌在Google I/O上展示了基于新Firebase的新通知系统.我在Github上尝试了这个新的FCM(Firebase云消息传递)示例.

尽管我已声明了特定的drawable,但通知的图标始终是ic_launcher

为什么?以下是处理邮件的官方代码

public class AppFirebaseMessagingService extends FirebaseMessagingService {

    /**
     * Called when message is received.
     *
     * @param remoteMessage Object representing the message received from Firebase Cloud Messaging.
     */
    // [START receive_message]
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        // 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 …
Run Code Online (Sandbox Code Playgroud)

android push-notification googleio firebase firebase-cloud-messaging

118
推荐指数
5
解决办法
13万
查看次数

不调用Firebase onTokenRefresh()

在我MainActivity的日志中,我可以看到使用的令牌FirebaseInstanceId.getInstance().getToken(),它显示生成的令牌.但似乎在我 MyFirebaseInstanceIDService扩展到的地方FirebaseInstanceIdService,onTokenRefresh()没有被调用,在这个函数中,据说令牌最初是在这里生成的.我需要打电话给我,sendRegistrationToServer()这就是为什么我想知道它为什么不进入的原因onTokenRefresh().

这是我的代码

public class MyFirebaseInstanceIDService  extends FirebaseInstanceIdService {


@Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);

        sendRegistrationToServer(refreshedToken);
    }
}
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-cloud-messaging firebase-notifications

69
推荐指数
5
解决办法
6万
查看次数

在Android Oreo版本中没有收到FCM通知消息?

我已经从服务器向用户发送FCM通知.它工作正常(直到api 25),但在奥利奥,当应用程序没有在后台(服务已关闭)(或)完全关闭.我没有得到任何FCM通知在这种情况但在Whatsapp工作正常.这里我附上了FCM代码

的Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.fcm">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>

        <meta-data
            android:name="com.google.firebase.messaging.default_notification_icon"
            android:resource="@drawable/ic_stat_ic_notification" />

        <meta-data
            android:name="com.google.firebase.messaging.default_notification_color"
            android:resource="@color/colorAccent" />

        <meta-data
            android:name="com.google.firebase.messaging.default_notification_channel_id"
            android:value="fcm"/>

        <meta-data android:name="firebase_messaging_auto_init_enabled"
            android:value="false" />

        <meta-data android:name="firebase_analytics_collection_enabled"
            android:value="false" />

    </application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

应用程序/ gradle这个

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.fcm"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 1
        versionName "1.0" …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-cloud-messaging

21
推荐指数
2
解决办法
1万
查看次数

FireBase云消息传递不起作用

我正在尝试使用FireBase云消息传递.我收到一个令牌,但它没有从控制台收到任何通知.这是我的清单:

  <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="careerage.jobseeker.app"
android:hardwareAccelerated="true"
android:versionCode="1"
android:versionName="0.0.1">

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="23" />

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:resizeable="true"
    android:smallScreens="true"
    android:xlargeScreens="true" />

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

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

<application
    android:hardwareAccelerated="true"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:supportsRtl="true">
    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
        android:label="@string/activity_name"
        android:launchMode="singleTop"
        android:theme="@android:style/Theme.DeviceDefault.NoActionBar"
        android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/launcher_name">
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service
        android:name=".TokenService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>
    <service
        android:name=".NotificationService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
</application>
Run Code Online (Sandbox Code Playgroud)

而我的代码几乎与样本相同:

public class NotificationService extends FirebaseMessagingService {

private void …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-cloud-messaging

8
推荐指数
1
解决办法
7590
查看次数

当应用处于后台状态时,Google FCM getIntent不会返回预期数据

我正在我的应用程序中实现FCM(Firebase消息服务).这里似乎都没问题,除非app处于后台状态我无法提取预期的通知数据.

基于概念:FCM中有两种类型的消息:

display-messages:这些消息仅在您的应用处于前台时才有效.

数据消息:即使您的应用处于后台,这些消息也能正常工作当我们的应用处于后台时,Android会将通知消息定向到系统托盘.

处理数据消息时,您的通知应具有click_action ="YOUR_ACTION"字段.

我的信息会是这样的:

{
 "data": {
  "body": "here is body",
  "title": "Title",
  "click_action": "YOUR_ACTION"
 },
 "to": "ffEseX6vwcM:APA91bF8m7wOF MY FCM ID 07j1aPUb"
}
Run Code Online (Sandbox Code Playgroud)

活动将显示清单文件将如下所示的消息:

<activity
            android:name=".NotificationActivity"
            android:screenOrientation="portrait"
            android:theme="@style/Theme.AppCompat.Dialog"
            android:windowSoftInputMode="stateHidden" >

            <intent-filter>
                <action android:name="YOUR_ACTION" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
Run Code Online (Sandbox Code Playgroud)

点击通知后,它将重定向到我的NotificationActivity.在我的NotificationActivityin onCreateonNewIntent方法中,我使用这种方式提取消息:

Bundle bundle=getIntent().getExtras();
        if(bundle!=null) {
            for (String key : bundle.keySet()) {
                Object value = bundle.get(key);
                Log.d("DATA_SENT", String.format("%s %s (%s)", key,
                        value.toString(), value.getClass().getName()));
            }
        } …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-cloud-messaging

8
推荐指数
1
解决办法
1万
查看次数