PubNub - 消息以推送和实时方式接收 [Android]
PubNub - Messages are received both as Push and as realtime [Android]
我订阅了两个地方的所有必要频道:
// For receiving real time (regular) messages
pubnub.subscribe().channels(channels).execute();
和推送
pubnub.addPushNotificationsOnChannels()
.pushType(PNPushType.FCM)
.channels(channels)
.deviceId(firebaseMessageingTokenForThisUser)
当我发送消息时,我也为 Push 指定了数据:
PushPayloadHelper pushPayloadHelper = new PushPayloadHelper();
// set FCM payload
pushPayloadHelper.setFcmPayload(fcmPayload);
// Set APNs payload
pushPayloadHelper.setApnsPayload(apnsPayload);
// Common payload for realtime PubNub subscribe
Map<String, Object> commonPayload = new HashMap<>();
commonPayload.put("message", jsonPayload);
pushPayloadHelper.setCommonPayload(commonPayload);
pubnub.publish()
.channel(channelName)
.message(pushPayloadHelper.build())...
预期行为:
- 当 Android 客户端处于前台时,消息会实时传送
- 当应用 closed/killed 消息作为推送传送时
当前行为:
当应用为 运行 时,消息以推送方式传送(调用 Firebase 推送服务方法)
和实时(public void message(@NotNull PubNub pubnub, @NotNull PNMessageResult message)
方法被调用)
我做错了什么?在官方文档中找不到任何相关信息。
PubNub 实时消息和移动推送通知
subscribe to all necessary channels in 2 places
首先,为了保持术语的有序性,您订阅频道实时消息和您在频道上注册设备移动推送通知.订阅仅适用于实时消息。这是一个吹毛求疵但重要的是当我们谈论这个时要保持清楚。
是的,每次您发布包含移动推送有效负载的消息时,它都会传送到频道的活跃 订阅者 并作为 移动传送将通知 推送到在该频道上注册推送的设备。这是预期和必要的。
诀窍是当应用程序在前台(活动)时,您只是不显示推送通知,因为您在 addListener''s
message` 处理程序中收到了它。
所以问题是,您的“移动推送消息接收器”处理程序是什么样的?
这是 really old blog/video that explains all this。虽然它已经超过 5 年了,但它仍然具有相关性。
我订阅了两个地方的所有必要频道:
// For receiving real time (regular) messages
pubnub.subscribe().channels(channels).execute();
和推送
pubnub.addPushNotificationsOnChannels()
.pushType(PNPushType.FCM)
.channels(channels)
.deviceId(firebaseMessageingTokenForThisUser)
当我发送消息时,我也为 Push 指定了数据:
PushPayloadHelper pushPayloadHelper = new PushPayloadHelper();
// set FCM payload
pushPayloadHelper.setFcmPayload(fcmPayload);
// Set APNs payload
pushPayloadHelper.setApnsPayload(apnsPayload);
// Common payload for realtime PubNub subscribe
Map<String, Object> commonPayload = new HashMap<>();
commonPayload.put("message", jsonPayload);
pushPayloadHelper.setCommonPayload(commonPayload);
pubnub.publish()
.channel(channelName)
.message(pushPayloadHelper.build())...
预期行为:
- 当 Android 客户端处于前台时,消息会实时传送
- 当应用 closed/killed 消息作为推送传送时
当前行为:
当应用为 运行 时,消息以推送方式传送(调用 Firebase 推送服务方法)
和实时(public void message(@NotNull PubNub pubnub, @NotNull PNMessageResult message)
方法被调用)
我做错了什么?在官方文档中找不到任何相关信息。
PubNub 实时消息和移动推送通知
subscribe to all necessary channels in 2 places
首先,为了保持术语的有序性,您订阅频道实时消息和您在频道上注册设备移动推送通知.订阅仅适用于实时消息。这是一个吹毛求疵但重要的是当我们谈论这个时要保持清楚。
是的,每次您发布包含移动推送有效负载的消息时,它都会传送到频道的活跃 订阅者 并作为 移动传送将通知 推送到在该频道上注册推送的设备。这是预期和必要的。
诀窍是当应用程序在前台(活动)时,您只是不显示推送通知,因为您在 addListener''s
message` 处理程序中收到了它。
所以问题是,您的“移动推送消息接收器”处理程序是什么样的?
这是 really old blog/video that explains all this。虽然它已经超过 5 年了,但它仍然具有相关性。