Bạn có thể sử dụng MQTT để xây dựng dịch vụ thông báo đẩy. (Lưu ý: các ứng dụng như Facebook sử dụng MQTT cho các thông báo đẩy).
Vì vậy, để xây dựng một dịch vụ thông báo push bạn cần một nhà môi giới MQTT chạy trên máy chủ (Tôi khuyên bạn nên MQTT Mosquitto và dịch vụ bachground chạy trên thiết bị Android.
Mã cho dịch vụ MQTT (có thể dùng cả trên máy chủ và trên sode khách hàng):
/**
* MQTTManager class provide methods to connect, subscribe, publish, and listen to MQTT broker
*/
public class MQTTManager {
private final String TAG = "MQTT";
private final String BROKER_URL = "http://mqtt-dashboard.com/info/broker:1883"; //change it to your broker URL
private MqttClient mqttClient;
private String CLIENT_ID = "123"
private String topic = "ABC"
private int keepAliveInterval=60*5;
private MqttConnectOptions opt;
/**
* Constructor
* @throws MqttException
*/
protected MQTTManager() throws MqttException {
opt=new MqttConnectOptions();
opt.setKeepAliveInterval(keepAliveInterval);
opt.setConnectionTimeout(10);
mqttClient = new MqttClient(BROKER_URL, CLIENT_ID, new MemoryPersistence());
mqttClient.setCallback(new MQTTCallback(BROKER_URL, CLIENT_ID, topic));
}
/**
* Connects to the MQTT broker service on server side.
*/
public void connect(){
try {
mqttClient.connect(opt);
} catch (MqttException e) {
Log.e(TAG, "Error while connecting to mqtt broker: "+e.toString());
}
}
/**
* Subscribes the device to the topic provided via constructor
*/
public void subscribeDevice(){
try {
mqttClient.subscribe(this.topic);
} catch (MqttException e) {
Log.e(TAG, "Error while subscribing to mqtt broker: "+e.toString());
}
}
/**
* Publishes the message to the MQTT broker service.
* @param String Message that needs to be published
*/
public void publishToDevice(String message){
try {
MqttTopic mtopic=mqttClient.getTopic(this.topic);
MqttMessage msg= new MqttMessage(message.getBytes());
mtopic.publish(msg);
} catch (MqttException e) {
Log.e(TAG, "Error while publishing to mqtt broker: "+e.toString());
}
}
/**
* Inner class for mqtt callback
*/
public class MQTTCallback implements MqttCallback{
final private String TAG = "MQTT";
private String BROKER_URL;
private String CLIENT_ID;
private String TOPIC;
private MqttClient mqttClient;
public MQTTCallback(String BROKER_URL, String CLIENT_ID, String TOPIC) {
this.BROKER_URL= BROKER_URL;
this.CLIENT_ID = CLIENT_ID;
this.TOPIC=TOPIC;
}
public void connectionLost(Throwable arg0) {
connect();
}
public void deliveryComplete(MqttDeliveryToken arg0) {
if(arg0==null)
System.out.print("Message delivered");
}
public void messageArrived(MqttTopic arg0, MqttMessage arg1)
throws Exception {
// MESSAGE ARRIVES HERE!! argo-> device id & arg1 --> message
}
}
}
Để tìm hiểu thêm, bạn có thể kiểm tra các dịch vụ thông báo push MQTT thực hiện trong dự án này. SenSocial mà tôi thực hiện
Nếu bạn không có một nhà môi giới chạy trên máy chủ của bạn, sau đó bạn có thể thử một nhà môi giới dựa trên MQTT Mosquitto có sẵn công khai: MQTT BROKER
lý do bảo mật nào khiến bạn nghĩ rằng hai lần nếu tôi có thể yêu cầu – tyczj
Đây là một phần của ứng dụng ngân hàng. Và vì lý do rất giống tôi đã được bảo rằng tôi không thể sử dụng GCM. – Newbie
xem http://stackoverflow.com/questions/15297246/are-there-any-alternative-to-gcm-google-cloud-messaging-for-custom-android-bui –