gpt4 book ai didi

android - pubnub.subscribe 没有响应

转载 作者:太空狗 更新时间:2023-10-29 12:52:06 25 4
gpt4 key购买 nike

我在我的应用程序中使用 PubNub SDK for Android .我尝试订阅一个 channel ,但没有任何反应。

这是我连接到 pubnub 的代码:

public class MyPubnub {
private static Pubnub pubnub = null;
private static final String publishKey = "MY PUBLISH KEY";
private static final String subscribeKey = "MY SUBSCRIBER KEY";
private static final String secretKey = "MY SECRET KEY";

private MyPubnub() {
}

public static Pubnub getPubnubObject() {
if (pubnub == null) {
pubnub = new Pubnub(publishKey, subscribeKey, secretKey, null,
false);
}
return pubnub;
}
}


订阅pubnub代码:

public void onCreate(Bundle b) {
super.onCreate(b);
initUI();
Pubnub pn = MyPubnub.getPubnubObject();
String channel = getChannelName();
Reciver reciver = new Reciver();

pn.subscribe(channel, reciver);
}
class Reciver implements Callback {

@Override
public boolean execute(Object message) {
Log.d("PUBNUB", "message received [" + message.toString() + "]");
return true;
}
}


在调试过程中,我注意到一旦我尝试运行此行,应用程序就会卡住: pn.subscribe(channel, reciver);(没有任何反应,没有任何反应,没有任何反应)。

有什么想法吗?

最佳答案

PubNub Android SDK

您询问的是使用 PubNub 订阅功能在 Android 移动电话设备上接收远程消息的 PubNub Android API。关于您使用的单例模式,这看起来不错! :-)

PubNub Android SDK Documentation: http://www.pubnub.com/docs/java/android/android-sdk.html

但是听起来您在订阅调用时被阻止了。您使用的是最新的 PubNub Android API - https://github.com/pubnub/java/tree/master/android - 最新的 API 应该允许您自动调用订阅 API 而不会阻止您的应用程序。但是,如果是这种情况,并且 subscribe() 方法确实阻塞了您的应用程序,您可以通过将此函数调用放在 Java 线程中并在新消息到达时将消息发布到您的父主程序来解决此问题。

所以最终的解决方案是将 PubNub 方法调用放在一个新的线程中,在从回调中接收到更新时将更新发送给父线程:

https://github.com/pubnub/java/tree/master/android

Thread t = new Thread() {
public void run() {
HashMap<String, Object> args = new HashMap<String, Object>(6);
args.put("channel", _channel);

// callback to get response
args.put( "callback", new ReceivedMessage() );

// Listen for Messages (Subscribe)
_pubnub.subscribe(args);
};
};
t.start();
threads.put(_channel, t);

然后实现 ReceiveMessage() 类:https://github.com/pubnub/java/tree/master/android - 查看源代码。

请注意,这不是完整的复制/粘贴答案,但它会让您指向正确的方向。此外,这种线程风格将向后兼容 future 的升级。

所以最后,使用 Threads() 是您的答案。

关于android - pubnub.subscribe 没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290550/

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