首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sinch In-App即时通讯

Sinch In-App即时通讯
EN

Stack Overflow用户
提问于 2016-03-03 04:45:46
回答 1查看 471关注 0票数 0

管理下的推送非常好,但除了这一个问题。

当我的应用程序是前台或后台时,我使用GCM侦听器接收消息,并且显示通知,但在应用程序不运行的情况下除外。

我插入了调试日志语句来查看流程,似乎push消息到达GCM侦听器并被发送到我的服务,但它从未被中继到消息客户端侦听器。只有在应用程序没有运行或关闭时才会发生这种情况。

当应用程序运行后台或前台时,我正在执行以下操作,并且在onIncomingMessage中确实会得到回调,但是当应用程序不运行时,相同的代码不起作用。

Sinch客户端初始化代码:

代码语言:javascript
复制
            public void startSinchClient(String username) {
            try {
                sinchClient = Sinch.getSinchClientBuilder().context(this).userId(username).applicationKey(ApplicationConstants.SINCH_SANDBOX_API_KEY)
                        .applicationSecret(ApplicationConstants.SINCH_SANDBOX_API_SECRET).environmentHost(ApplicationConstants.SINCH_SANDBOX_API_URL).build();

                sinchClient.setSupportMessaging(true);
                sinchClient.setSupportManagedPush(true);

                sinchClient.checkManifest();

                sinchClient.addSinchClientListener(this);

                if ( messageClientListener == null ) {
                    messageClientListener = new MyMessageClientListener();
                }

                sinchClient.getMessageClient().addMessageClientListener(messageClientListener);
                Log.e("SinchMessageService", "Login successful.");
            } catch (MissingGCMException missingGCM) {
                Log.e("SinchMessageService", missingGCM.getMessage());
            }
            }

OnBind码

代码语言:javascript
复制
            if (!isSinchClientStarted()) {
                startSinchClient(currentUserId);
                sinchClient.start();
            }

在RelayRemotePushNotificationCode中:

代码语言:javascript
复制
            public NotificationResult relayRemotePushNotificationPayload(Intent intent) {
            if ( currentUserId.isEmpty() ) {
                Log.e("SinchMessageService", "UserID not available.Please login again.");
                return null;
            } else if ( !isSinchClientStarted() ) {
                startSinchClient(currentUserId);
                sinchClient.start();
            }

            Log.d("SinchService", "relayRemotePushNotificationPayload");

            NotificationResult notificationResult = sinchClient.relayRemotePushNotificationPayload(intent);

            if (notificationResult.isMessage()) {
                sinchClient.startListeningOnActiveConnection();
            }

            return notificationResult;
            }

在MessageClientListener中:

代码语言:javascript
复制
                            public void onIncomingMessage(MessageClient client, final Message message) {
            if (message.getRecipientIds().get(0).equals(ApplicationConstants.userInfo.getEmail())) {
                sinchClient.stopListeningOnActiveConnection();
            ....    

以上代码适用于所有场景。我的意思是当应用程序在前台和后台运行时。只有当我杀死这个应用程序时,才不会得到onIncomingMessage的回调。

来自Sinch客户端的日志语句:

mUserAgent.startBroadcastListener():03-03 22:07:44.213 17381-17381/com.ontymeE/SinchClient:

03-03 22:07:45.271 17381-17381/com.ontyme E/MessageClient: onIncomingMessage: NativeMessage id=2059913a-27ac-4105-A 797-764f09af66d2,nativeAddress=-1321533856

还有人面临过这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2016-03-07 21:36:21

抱歉,伙计们,辛奇管理的推进没有问题。这是小错误在我的结尾,是造成这个问题。当应用程序不运行时,我在应用程序中的接收程序没有被正确初始化,这就是为什么在onIncomingMessage中所有消息都被忽略的原因。

管理推送现在对我来说是无缝的。

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

https://stackoverflow.com/questions/35763392

复制
相关文章

相似问题

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