开发者社区> 问答> 正文

多次或一次连接到Android应用程序中的推送程序?

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

我是否连接到提醒列表中每个项目的频道?还是我应该一次连接到Pusher,并在pusher事件中获得相关的系列/电影消息?(每个提醒列表项的服务器端实现的pusher,我们应该更改服务器端的实现还是我可以为每个项目连接到Pusher?)

这是我的推杆实现:

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;
    }

问题来源:Stack Overflow

展开
收起
montos 2020-03-24 14:38:29 506 0
1 条回答
写回答
取消 提交回答
  • 最佳做法是维持与频道的一个连接,但为提醒列表中的每个项目进行订阅。

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

    例如,如果想提醒用户“陌生事物”和“橙色是新的黑色”,则您可以同时订阅这两种方法:

    pusher.subscribePrivate("private-app_ch.strangerthings"
    

    pusher.subscribePrivate("private-app_ch.orangeisthenewblack"
    

    然后,您的服务器将向Stranger Things频道发布有关“ Stranger Things”的提醒,并向OISTNB频道发布OISTNB的提醒。

    这样,仅将相关更新发送到客户端(服务器端筛选)。如果您仅订阅一个频道,客户端将收到他们可能不希望更新的消息,因此您必须在客户端将其过滤掉。

    此处也对此进行了说明:https : //support.pusher.com/hc/en-us/articles/360025398514-Should-i-subscribe-to-lots-of-Channels-

    值得考虑的另一点是,仅当应用程序打开时,通道才会保持活动连接。当应用程序处于后台/关闭状态时,连接将关闭。这意味着要发送提醒,用户将始终必须在您的应用中。您可能需要考虑在应用关闭时也发送推送通知,以使用户不会错过提醒。

    回答来源:Stack Overflow

    2020-03-24 14:39:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载