FCM在通知栏中显示灰色图标并提供空getData()getExtras()

时间:2017-04-07 21:34:28

标签: android firebase firebase-cloud-messaging

我正在整合FCM来管理iOS和Android移动应用程序的通知。对于iOS,一切运作良好:后台/前台服务器/控制台消息。

对于Android,我无法让它顺利运作。

使用控制台或发送服务器通知

1 - 当我发送通知并且应用程序处于后台时,通知中心始终显示灰色方块,而不是清单或有效负载中定义的图标。在展开通知中心之前,状态栏中的图标是正确的。

我尝试使用相同的结果指定全局回合@ drawable / resource_name或resource_name

2 - 当应用程序处于前台时,一切正常,但当应用程序处于后台时,onMessageReceived()永远不会被触发,SO会在通知中心自动显示通知,对应用程序透明,以及是否/何时用户单击通知中心的通知,引发具有DEFAULT的Activity,但getIntent()。getData()和getIntent()。getExtra()都为null,如果应用程序是,我的传递参数继续成功在前景。

的Manifest.xml

     <activity
        android:name=".ui.activities.MainActivity"
        android:theme="@style/AppTheme.ActionBar.Transparent">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="appName"
                android:scheme="appName" />
            <data
                android:host="subdomain.domain.com"
                android:scheme="https" />
        </intent-filter>
    </activity> 

...

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

        <!-- Used for FireBase Messaging and Analytics -->
        <service
            android:name=".services.MessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

        <service
            android:name=".services.TokenService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

问题1

图像资源本身存在问题,按照OneSignal文档我创建了一个新文档。

以下在线tool

特别有用

问题2

FCM的Web控制台始终包含通知有效负载。它假设如果在单击本地通知时还包括数据有效负载,则数据有效负载将作为Extra(Bundle)包含在新intent中。但这种情况并没有发生。

使用API​​并且只包含数据有效负载一切正常,您必须按预期手动处理位置通知。

最后,由于FCM Web控制台的局限性,我决定转向另一种方法(OneSignal)。