我在两个名额内订阅所有必需的频道:
// 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())...预期行为:
当前行为:
当应用程序运行时,消息都以Push的形式传递(调用Firebase Push服务方法)。
和实时(调用public void message(@NotNull PubNub pubnub, @NotNull PNMessageResult message)方法)
我做错什么了?在官方文件里什么都找不到。
发布于 2021-02-10 22:12:00
PubNub实时消息传递&移动推送通知
在两个名额内订阅所有必需的频道
首先,为了保持术语的有序性,您可以将订阅到用于实时消息的通道,并在用于移动推送通知的通道上注册设备。订阅只适用于实时消息。这是一个挑剔,但重要的是,保持明确的事情时,我们谈论这一点。
是的,每次您发布包含移动推送有效负载的消息时,它都会被传递给频道的活跃订阅者,并作为移动推送通知传递给注册在该信道上的设备。这是预期的,也是必要的。
诀窍是,当应用程序处于前台(活动)时,您只是不显示推送通知,因为您在addListener''s消息处理程序中收到了它。
所以问题是,您的“移动推送消息接收器”处理程序是什么样子?
这是一个非常古老的博客/视频解释了这一切。虽然它已有5年以上的历史,但仍然具有现实意义。
https://stackoverflow.com/questions/66144782
复制相似问题