3

Mqttを使用してサーバーからメッセージを受信するためにpaho androidサービスクライアントを使用しています。アクティビティが実行されているとき、アプリケーションは送信と受信の両方で正常に動作しますが、アプリケーションが実行されていないときに公開されたメッセージは受信されず、Callback クラスは実行されません。

コンテキストに問題がある可能性があり、Callback がアクティビティ コンテキストに関連付けられているか、何らかの方法でアプリケーションを起動して、メッセージをデータベースに書き込んでから再びスリープ状態にする必要があると思います。

これが私の MqttCallback の実装です。

public class Callback implements MqttCallback{

private Context context;
private static final String TAG = "MQTT";

public Callback(Context context) {
    this.context = context;
}

@Override
public void connectionLost(Throwable arg0) {
    MQTTClient.reconnect(); 
}

@Override
public void deliveryComplete(IMqttDeliveryToken arg0) {
}

@Override
public void messageArrived(String topic, MqttMessage message) throws Exception {
    Log.i(TAG,"mesage arrived");
    //update database and store message
}

私のクライアントのインスタンス化は次のとおりです。

    client = newMqttAndroidClient(context,Constants.ADDRESS+Constants.PORT,
    MqttAsyncClient.generateClientId());
    client.setCallback(new Callback(context));

両方に送信されるコンテキストは、私の MainActivity (これ) のコンテキストです。

ガイダンスをいただければ幸いです。

4

0 に答える 0