PubNub 不从服务发布
PubNub not publishing from Service
我之前使用后台服务中的 PubNub 在 android 上发布位置更新。我希望将它用于不同的项目并编写了一个简单的服务来测试新 API。然而,发布总是失败,我无法确定原因。
这里是服务代码:
public class MessageService extends Service {
private static final String TAG = "MessageService";
private PubNub pubnub;
private Timer timer = new Timer();
public MessageService() {
PNConfiguration config = new PNConfiguration();
config.setPublishKey("pub_key_removed_for_privacy");
pubnub = new PubNub(config);
}
TimerTask task = new TimerTask() {
@Override
public void run() {
pubnub.publish()
.channel("demo")
.message("hello from service")
.async(new PNCallback<PNPublishResult>() {
@Override
public void onResponse(PNPublishResult result, PNStatus status) {
if (status.isError()) {
Log.e(TAG, "Publish failed");
} else {
Log.d(TAG, "Publish successful");
}
}
});
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
timer.schedule(task, 0, 5000);
return START_REDELIVER_INTENT;
}
@Override
public void onDestroy() {
super.onDestroy();
timer.cancel();
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
private final IBinder binder = new ServiceBinder();
public class ServiceBinder extends Binder {
public MessageService getService() {
return MessageService.this;
}
}
}
在 MainActivity 中,我只需调用 startService() 并查看日志,我总是会收到失败消息。我的清单中确实有互联网和 network_state 权限,但想不出任何其他原因导致它不起作用。有什么建议吗?
始终需要 PubNub 订阅密钥
您正在仅使用发布密钥初始化 PubNub。 subscribe key is always required when you config/init PubNub,即使你只是打算发布。
如果您没有使用订阅密钥初始化,或者它无效(打字错误或已禁用),那么当您尝试执行 PubNub 操作时,您将收到 400 - Invalid Subscribe Key error
响应(subscribe
, publish
、history
等)
public MessageService() {
PNConfiguration config = new PNConfiguration();
config.setPublishKey("your-pub-key");
config.setSubscribeKey("your-sub-key");
pubnub = new PubNub(config);
}
我之前使用后台服务中的 PubNub 在 android 上发布位置更新。我希望将它用于不同的项目并编写了一个简单的服务来测试新 API。然而,发布总是失败,我无法确定原因。
这里是服务代码:
public class MessageService extends Service {
private static final String TAG = "MessageService";
private PubNub pubnub;
private Timer timer = new Timer();
public MessageService() {
PNConfiguration config = new PNConfiguration();
config.setPublishKey("pub_key_removed_for_privacy");
pubnub = new PubNub(config);
}
TimerTask task = new TimerTask() {
@Override
public void run() {
pubnub.publish()
.channel("demo")
.message("hello from service")
.async(new PNCallback<PNPublishResult>() {
@Override
public void onResponse(PNPublishResult result, PNStatus status) {
if (status.isError()) {
Log.e(TAG, "Publish failed");
} else {
Log.d(TAG, "Publish successful");
}
}
});
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
timer.schedule(task, 0, 5000);
return START_REDELIVER_INTENT;
}
@Override
public void onDestroy() {
super.onDestroy();
timer.cancel();
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
private final IBinder binder = new ServiceBinder();
public class ServiceBinder extends Binder {
public MessageService getService() {
return MessageService.this;
}
}
}
在 MainActivity 中,我只需调用 startService() 并查看日志,我总是会收到失败消息。我的清单中确实有互联网和 network_state 权限,但想不出任何其他原因导致它不起作用。有什么建议吗?
始终需要 PubNub 订阅密钥
您正在仅使用发布密钥初始化 PubNub。 subscribe key is always required when you config/init PubNub,即使你只是打算发布。
如果您没有使用订阅密钥初始化,或者它无效(打字错误或已禁用),那么当您尝试执行 PubNub 操作时,您将收到 400 - Invalid Subscribe Key error
响应(subscribe
, publish
、history
等)
public MessageService() {
PNConfiguration config = new PNConfiguration();
config.setPublishKey("your-pub-key");
config.setSubscribeKey("your-sub-key");
pubnub = new PubNub(config);
}