gpt4 book ai didi

java - 连接到 Android 应用程序中的推送器,多次还是一次?

转载 作者:行者123 更新时间:2023-12-02 08:52:25 24 4
gpt4 key购买 nike

在我的应用程序(流媒体系列、电影)中,我有一个供用户使用的部分,可以为系列或电影设置提醒。我实现了Pusher来接收服务器消息来提醒数据。

我确实连接到了提醒列表中每个项目的 channel 吗?或者我应该连接到推送器一次,并在推送器事件中获取相关的系列/电影消息?(服务器端为每个提醒列表项目实现推送器,我们应该更改服务器端实现还是我可以为每个项目连接到推送器?)

这是我的推送器实现:

 public Pusher getPusher() throws Exception {
if (pusher == null) {
HttpAuthorizer auth = new HttpAuthorizer(BuildConfig.PUSHER);
HashMap<String, String> authHeader = new HashMap<>();
authHeader.put("Authorization", SharedPref.INSTANCE.read(AUTH_TOKEN, ""));
auth.setHeaders(authHeader);
PusherOptions option = new PusherOptions();
option.setCluster(BuildConfig.PUSHER_CLUSTER);
option.setAuthorizer(auth);
pusher = new Pusher(BuildConfig.PUSHER_KEY, option);


pusher.subscribePrivate("private-app_ch." + serialId, new PrivateChannelEventListener() {
@Override
public void onAuthenticationFailure(String s, Exception e) {
Timber.i("pusher onAuthenticationFailure " + e.getMessage());
}

@Override
public void onSubscriptionSucceeded(String s) {
Timber.i("pusher onSubscriptionSucceeded: " + s);
}

@Override
public void onEvent(String s, String s1, String result) {
Timber.i("pusher onEvent" + s + ":" + s1);
Timber.i("pusher onEvent" + result);


}
}, "App\\Events\\AppBroadcastEvent");
}
return pusher;
}

最佳答案

最佳做法是保持与 channel 的一个连接,但为提醒列表中的每一项订阅

因此,您可以为提醒列表中的每个项目调用 Pusher.subscribePrivate,然后在需要发送提醒时在服务器端发布到每个单独的 channel 。

例如,如果用户想要提醒有关“怪奇物语”和“橙色是新的黑色”,您可以同时订阅这两个内容:

pusher.subscribePrivate("private-app_ch.strangerthings"

pusher.subscribePrivate("private-app_ch.orangeisthenewblack"

然后,您的服务器会将有关“怪奇物语”的提醒发布到《怪奇物语》 channel ,并将有关 OISTNB 的提醒发布到 OISTNB channel ,依此类推。

这样,只有相关更新才会发送到客户端(服务器端过滤)。如果您只订阅一个 channel ,客户端将收到他们可能不想要更新的消息,您必须在客户端过滤掉这些消息。

这里也对此进行了解释:https://support.pusher.com/hc/en-us/articles/360025398514-Should-i-subscribe-to-lots-of-Channels-

值得考虑的另外一点是, channel 只会在应用程序打开时保持 Activity 连接。当应用程序后台/关闭时,连接将关闭。这意味着要发送提醒,用户必须始终在您的应用程序中。您可能需要考虑在应用程序关闭时也发送推送通知,以便用户不会错过提醒。

关于java - 连接到 Android 应用程序中的推送器,多次还是一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60693097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com