首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PubNub -消息同时作为推送和实时接收[Android]

PubNub -消息同时作为推送和实时接收[Android]
EN

Stack Overflow用户
提问于 2021-02-10 20:48:38
回答 1查看 183关注 0票数 0

我在两个名额内订阅所有必需的频道:

代码语言:javascript
复制
// For receiving real time (regular) messages
pubnub.subscribe().channels(channels).execute();

和推

代码语言:javascript
复制
pubnub.addPushNotificationsOnChannels()
                            .pushType(PNPushType.FCM)
                            .channels(channels)
                            .deviceId(firebaseMessageingTokenForThisUser)

当我发送消息时,我还为Push指定了数据:

代码语言:javascript
复制
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())...

预期行为:

  1. 当Android客户端处于前台时,消息作为实时传递。
  2. 当app被关闭/终止时,消息以Push的形式传递。

当前行为:

当应用程序运行时,消息都以Push的形式传递(调用Firebase Push服务方法)。

和实时(调用public void message(@NotNull PubNub pubnub, @NotNull PNMessageResult message)方法)

我做错什么了?在官方文件里什么都找不到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 22:12:00

PubNub实时消息传递&移动推送通知

在两个名额内订阅所有必需的频道

首先,为了保持术语的有序性,您可以将订阅到用于实时消息的通道,并在用于移动推送通知的通道上注册设备。订阅只适用于实时消息。这是一个挑剔,但重要的是,保持明确的事情时,我们谈论这一点。

是的,每次您发布包含移动推送有效负载的消息时,它都会被传递给频道的活跃订阅者,并作为移动推送通知传递给注册在该信道上的设备。这是预期的,也是必要的。

诀窍是,当应用程序处于前台(活动)时,您只是不显示推送通知,因为您在addListener''s消息处理程序中收到了它。

所以问题是,您的“移动推送消息接收器”处理程序是什么样子?

这是一个非常古老的博客/视频解释了这一切。虽然它已有5年以上的历史,但仍然具有现实意义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66144782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档