【问题标题】:Firebase onMessageReceived() not called via pyfcmFirebase onMessageReceived() 未通过 pyfcm 调用
【发布时间】:2017-07-31 13:32:33
【问题描述】:

我正在尝试通过 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(verbose) 仍然没有显示任何内容。 有什么可能的原因吗?

【问题讨论】:

  • 您应该首先使用 FCM 控制台确认您的 Android 代码。如果之后它工作正常,那么您可以检查您的后端。
  • 我可以从 FCM 作曲家那里得到这些信息。

标签: android firebase pyfcm


【解决方案1】:

我在 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"))
}

【讨论】:

    猜你喜欢
    • 2018-01-22
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 2021-02-20
    • 2017-04-22
    相关资源
    最近更新 更多