Firebase onMessageReceived()未通过pyfcm调用

时间:2017-07-31 04:47:49

标签: android firebase pyfcm

我正试图通过"徽章"通过FCM的号码。 我知道onMessageReceived()只在以下情况下被调用: [有效负载仅包含"数据",无消息]

我正在使用" com.google.firebase:firebase-messaging:11.0.2"  服务器端的 pyfcm 可以通过此方式发送我的通知。

result = push_service.notify_multiple_devices(
    registration_ids=ids, data_message={'badge': '5'}
)
>> all success.

我的服务:

public class MyFCMService extends FirebaseMessagingService {
  private static final String TAG = "MyFCMService";
  public MyFCMService() {
  }

  @Override
  public void onMessageReceived(RemoteMessage remoteMessage) {
    Log.d(TAG, remoteMessage.getData().toString());
    super.onMessageReceived(remoteMessage);
  }
}

manifest.xml中的我的服务:

<service android:name=".MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
    </intent-filter>
</service>
<service
    android:name=".MyFCMService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

我已阅读this但我没有关闭该应用(只需按HOME) 但仍然,logcat(详细)没有显示任何内容。 有什么可能的原因吗?

1 个答案:

答案 0 :(得分:0)

我在Manifest文件中复制代码时找到了原因......

应该是

<application>
    ...
    <service
        android:name=".libs.fcm.MyFCMService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
</application>

不是

<service
    android:name=".libs.fcm.MyFCMService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>
<application>
    ...
</application>

结果:

D/MyFCMService: {badge=5}
可以通过ShortcutBadger通过通知更新

和徽章编号 使用datapayload包含徽章。

pyfcm:
result = push_service.notify_multiple_devices(registration_ids=registration_ids, data_message=data_message, click_action=click_action, message_title=message_title,message_body=message_body, message_icon=message_icon)


Android Service
@Override
public void handleIntent(Intent intent) {
    if(intent.hasExtra("badge"))
}