[英]How do I specify the recipient token when using RemoteMessage of Firebase Cloud Messaging?
我正在嘗試在我的應用程序中為某些操作建立推送通知(“有人喜歡你的這個”,“有人對此發表評論”等)。
我試着在 這里遵循谷歌的指南
但是當我復制代碼時,這部分
String response = FirebaseMessaging.getInstance().send(message);
給出一個錯誤,說它期待RemoteMessage
而不是Message
。 我正在嘗試將其更改為 RemoteMessage,但我無法理解:
.setToken
的東西。RemoteMessage.Builder()
的括號內放什么我已經閱讀了很多手冊,但找不到任何解決它的方法。 是 API 的新變化嗎?
幫助我的最好方法是使用 Kotlin 舉例說明一條新生成的消息——作為響應,該消息會根據令牌為收件人觸發新的推送通知(我很確定我可以自己處理接收) .
謝謝!
編輯:
我能夠使它符合它會滿意的模式,但我無法顯示通知。
這是我用來發送通知的功能:
fun sendCloudMessage(userId: String) {
val receiverRef = FirebaseDatabase.getInstance().getReference("/users/$userId/services/firebase-token")
receiverRef.addListenerForSingleValueEvent(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
}
override fun onDataChange(p0: DataSnapshot) {
val registrationToken = p0.getValue(String::class.java)
Log.d("tokencomplete", p0.toString())
Log.d("tokenonly", registrationToken)
val fm = FirebaseMessaging.getInstance()
fm.send(
RemoteMessage.Builder("$registrationToken@gcm.googleapis.com")
.setMessageId(Integer.toString(0))
.addData("my_message", "Hello World")
.addData("my_action", "SAY_HELLO")
.build()
)
}
})
}
我傳遞給此函數的userId
是 firebase uid,並使用它獲取用戶正在使用的應用程序的最新令牌。 我已經檢查過並且該部分有效並且我以類似於此的格式返回令牌
ecK86WRoAh4:APA91bGQWSesCptPF_nzfkmgDe-zOYYo2Cj4XT_NeNTVaBxQakbvauOpkVFd7DCRIugMCfso5SadEUtyTRvrhdCiBpKxGGMRgUYNsUhA24f9IkmxjL5dWD
但是該功能本身不會在另一台設備中引發任何通知(我正在使用兩台設備試圖讓一台設備與另一台設備觸發通知)。
在您的RemoteMessage
構建器構造函數中設置發件人 ID,它應該如下所示:
RemoteMessage.Builder(token)
;
編輯
這是我使用的方法:
public void sendMessage (final String data) {
FirebaseMessaging fm = FirebaseMessaging.getInstance();
String token = FirebaseInstanceId.getInstance().getToken();
String msgID = DigestUtils.sha1Hex(token + System.currentTimeMillis());
String SENDER_ID = "someID";
RemoteMessage.Builder RMBuilder =
new RemoteMessage.Builder(SENDER_ID + "@gcm.googleapis.com");
RMBuilder.setMessageId(msgID);
Map<String, Object> mapData = Utils.jsonToMap(data);
for (Map.Entry<String, Object> entry : mapData.entrySet()) {
RMBuilder.addData(entry.getKey(), entry.getValue().toString());
}
fm.send(RMBuilder.build());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.