2016-09-30 7 views
2

私はMQTT以上のパブ/サブのための私のコードのQoS 2. 、AndroidのPAHOクライアントライブラリv1.1.0デベロッパーを使用しています:Android Pahoクライアント - ネットワークを有効にした後にオフラインバッファリングを有効にしてメッセージを送信するにはどうすればよいですか?

mClient = new MqttAndroidClient(this, uri, clientId, new MqttDefaultFilePersistence()); 
MqttConnectOptions conOpt = new MqttConnectOptions(); 

conOpt.setMqttVersion(MqttConnectOptions.MQTT_VERSION_3_1); 
conOpt.setCleanSession(true); 
conOpt.setAutomaticReconnect(true); 

mClient.setTraceEnabled(true); 

mClient.setCallback(this); 
mClient.setTraceCallback(this); 

IMqttToken connectToken = mClient.connect(conOpt, null, this); 

とオフラインのバッファリングオプション:場合は、トピックに公開

@Override 
public void onSuccess(IMqttToken iMqttToken) { 
    this.disconnectedBufferOptions = new DisconnectedBufferOptions(); 
    this.disconnectedBufferOptions.setBufferEnabled(true); 

    mClient.setBufferOpts(disconnectedBufferOptions); 

    subscribe(topic); 
} 

メッセージネットワークは使用可能ですが、オフラインのメッセージを無効にして有効にした場合は送信しません。 オフラインバッファリングオプションを正しく有効にしてオフラインメッセージを送信する方法 追加情報:ネットワークを無効にしてメッセージを公開した後のmClient.getBufferedMessageCount()

答えて

1

conOpt.setAutomaticReconnect(true)を使用して、接続トークンのonSuccessの次のコードスニペットを使用して解決しました。

DisconnectedBufferOptions disconnectedBufferOptions = new DisconnectedBufferOptions(); 

disconnectedBufferOptions.setBufferEnabled(true); 
disconnectedBufferOptions.setBufferSize(100); 
disconnectedBufferOptions.setPersistBuffer(false); 
disconnectedBufferOptions.setDeleteOldestMessages(false); 

mClient.setBufferOpts(disconnectedBufferOptions);   
関連する問題