项目需要,要实现Android端消息推送,预研了极光推送、阿里云MQTT,最终选择阿里云MQTT。
具体实现步骤如下:
1、添加依赖项:
在项目根目录下的build.gradle中添加:
repositories {
maven {
url "https://repo.eclipse.org/content/repositories/paho-releases/"
}
}
在app目录下的build.gradle中添加:
dependencies {
compile 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1'
compile 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.1'
}
2、声明权限
在AndroidManifest.xml中添加:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
3、开启服务
在Androidmanifest.xml中添加:
<service android:name="org.eclipse.paho.android.service.MqttService" />
4、在Android Studio中采用创建Service的方式,实现阿里云MQTT,实例采用的订阅/发布者方式,也可采用p2p方式即将topic的二级设为“p2p”,三级设为目标接收方的ClientID。Service代码如下:
public class MQTTService extends Service {
public static final String TAG = MQTTService.class.getSimpleName();
private static MqttAndroidClient client;
private MqttConnectOptions conOpt;
private String host = "tcp://192.168.0.11:61613";
private String userName = "admin";
private String passWord = "password";
private static String myTopic = "ForTest"; //要订阅的主题
private String clientId = "androidId";//客户端标识
private IGetMessageCallBack IGetMessageCallBack;