Android アプリケーションで Paho の MQTT クライアントをサービスとして使用しています。API 26 以降で試してみると、問題なく動作していますが、サブスクライブはそのバージョンでは動作しません。
mqttClient.subscribe(JOIN_TOPIC, 0).setActionCallback(new IMqttActionListener() {
@Override
public void onSuccess(IMqttToken asyncActionToken) {
Log.d("Client Service", "Subscribe Success");
}
@Override
public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
Log.d("Client Service", "Subscribe Failed");
}
});
genymotion を使用してテストし、SDK デバッグ ツールを使用しています。API 26 は onSuccess メソッドに入りますが、API 25 は入りません。Publish メソッドは、両方のクライアントで問題はありません。
mqttClient = new MqttAndroidClient(getApplicationContext(), serverUri, nickname);
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
mqttToken = mqttClient.connect(options);
接続には問題ありません。問題なく接続されています。26 未満の API バージョンで subscribe に問題がある理由を知りたいだけです。