带有 Quickblox 的 Android 版 Google Cloud Messaging
Posted
技术标签:
【中文标题】带有 Quickblox 的 Android 版 Google Cloud Messaging【英文标题】:Google Cloud Messaging for Android with Quickblox 【发布时间】:2014-08-15 15:32:12 【问题描述】:我正在尝试使用 quickblox sdk 构建移动聊天应用程序。只有推送消息才能正常工作。我想要一个场景,离线用户可以在他们上线时阅读发送给他们的消息,所以我偶然发现了使用谷歌云消息传递的 quickblox 推送消息。我已经在 Google APIs Console 上完成了注册。如果我发送离线消息,我可以在我的 quickblox 帐户上看到它,但通知不会显示在我的移动设备上。
当我在执行 Google Cloud Messaging 时,我注意到有人要求我提供我提交服务器 IP 的 IP 地址。我认为这是在我的设备上看不到通知的原因。请我想知道我是否要提交我的服务器 IP 或 quickblox IP。谢谢
【问题讨论】:
如果您将 API 控制台中接受的 IP 地址列表留空,则接受任何 IP。我不明白你怎么会有这样的问题。 感谢 #shyam 出于好奇让我做出了这样的声明,因为一切似乎都只适用于 PUSH 消息 这可能与您在接收推送通知的 android 代码中实现 BroadcastReceiver 的方式有关。 那么,您的问题是您的设备上没有收到 Android 推送? @user3655892 那么哪个是最好的 GCM 或 Quickblox 【参考方案1】:我终于找到了问题的解决方案,我所做的是检查用户是否在线,如果是,则使用标准的 sendMessage 方法,否则使用 quickblox 推送。这解决了它。下面是使用的代码
@Override
public void sendMessage(String message) throws XMPPException
//Check if user is online or offline
if (isOnline())
chat.sendMessage(companionId, message);
else
StringifyArrayList<Integer> userId = new StringifyArrayList<>();
userId.add(companionId);
//Using PUSH notification
QBEvent event = new QBEvent();
event.setUserIds(userId);
event.setEnvironment(QBEnvironment.PRODUCTION);
event.setNotificationType(QBNotificationType.PUSH);
event.setMessage(message);
QBMessages.createEvent(event, new QBCallbackImpl()
@Override
public void onComplete(Result result)
// TODO Auto-generated method stub
super.onComplete(result);
if(result.isSuccess())
//Message sent
);
【讨论】:
isOnline的定义是什么?以上是关于带有 Quickblox 的 Android 版 Google Cloud Messaging的主要内容,如果未能解决你的问题,请参考以下文章