管理下的推送非常好,但除了这一个问题。
当我的应用程序是前台或后台时,我使用GCM侦听器接收消息,并且显示通知,但在应用程序不运行的情况下除外。
我插入了调试日志语句来查看流程,似乎push消息到达GCM侦听器并被发送到我的服务,但它从未被中继到消息客户端侦听器。只有在应用程序没有运行或关闭时才会发生这种情况。
当应用程序运行后台或前台时,我正在执行以下操作,并且在onIncomingMessage中确实会得到回调,但是当应用程序不运行时,相同的代码不起作用。
Sinch客户端初始化代码:
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码
if (!isSinchClientStarted()) {
startSinchClient(currentUserId);
sinchClient.start();
}在RelayRemotePushNotificationCode中:
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中:
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
还有人面临过这个问题吗?
发布于 2016-03-07 21:36:21
抱歉,伙计们,辛奇管理的推进没有问题。这是小错误在我的结尾,是造成这个问题。当应用程序不运行时,我在应用程序中的接收程序没有被正确初始化,这就是为什么在onIncomingMessage中所有消息都被忽略的原因。
管理推送现在对我来说是无缝的。
https://stackoverflow.com/questions/35763392
复制相似问题