PubNub不从Service发布

时间:2016-10-09 20:30:09

标签: android service pubnub

我之前使用后台服务中的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()并观察日志,我总是收到失败消息。我的清单中确实有internet和network_state权限,并且无法想到为什么这不起作用的任何其他原因。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

PubNub订阅密钥始终是必需的

您正在使用发布密钥初始化PubNub。 subscribe key is always required when you config/init PubNub,即使您只是要发布。

如果您没有使用订阅密钥初始化,或者它无效(拼写错误或已禁用),那么当您尝试执行PubNub操作时,您将收到400 - Invalid Subscribe Key error响应subscribe,{{ 1}},publish等。)

history