如何在安卓中测试 FCM 推送通知



我正在编写一个FCM通知集成,它工作正常。要测试组件,有没有办法模拟远程消息对象?

通过嘲笑,我的意思是执行Junit测试用例。任何建议!

转到FirebaseMessagingService子类并在onMessageReceived方法上设置断点。像往常一样发送正常的推送通知。站在断点上时检查对象remoteMessage。此对象的属性之一将是 Bundle 。现在,您只需要手动创建一个看起来相同的Bundle,然后使用该捆绑包创建RemoteMessage,例如:

val bundle = Bundle().apply {
    // System fields
    putString("google.delivered_priority", "high")
    putLong("google.sent_time", Date().time)
    putLong("google.ttl", 2419200)
    putString("google.original_priority", "high")
    putString("google.message_id", UUID.randomUUID().toString())
    putString("from", <your fcm project_number, from google-services.json>)
    // Custom fields
    putString("type", "my-type")
    putString("message", "Me message")
    ...
}
val remoteMessage = RemoteMessage(bundle)

目前无法模拟 FCM 中使用的RemoteMessage对象。AFAIK,甚至没有办法在不使用实际服务的情况下测试onMessageReceived()方法。

唯一有效的方法是测试您的sendNotification()(或您命名的方法的任何内容(,希望接受可能来自RemoteMessage对象的哈希映射(当然,如果您只使用数据消息有效负载,则这样做。

不幸的是,你不能,而且在不久的将来没有支持它的迹象。

你可以做什么:我们所做的,是在你的服务器中构建一个API命令,它会向你发送一个测试推送。支持会很乏味,但这已经很好了。

更糟糕的是:假设进行测试是为了保证可靠性。如果失败了怎么办?您请求一个新的令牌,但 FCM 会给您相同的令牌,可能......但它不起作用!如果您使令牌无效并请求令牌 - 它会有所帮助吗?不确定。

你的选择确实是有限的。

相关内容

  • 没有找到相关文章

最新更新