目录

安卓应用配置修改

包名”com.xiaomi.mimcdemo”必须替换成APP自己的包名

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  5. <uses-permission android:name="com.xiaomi.xmsf.permission.LOG_PROVIDER" />
  6. <!-- 这里的包名"com.xiaomi.mimcdemo"必须替换成App自己的包名 -->
  7. <permission
  8. android:name="com.xiaomi.mimcdemo.permission.MIMC_RECEIVE"
  9. android:protectionLevel="signature" />
  10. <uses-permission android:name="com.xiaomi.mimcdemo.permission.MIMC_RECEIVE" />
  11. <service
  12. android:name="com.xiaomi.mimc.MIMCService"
  13. android:enabled="true"
  14. android:exported="false" />
  15. <service
  16. android:name="com.xiaomi.mimc.MIMCCoreService"
  17. android:enabled="true"
  18. android:exported="false"
  19. android:process=":mimc"/>
  20. <service
  21. android:name="com.xiaomi.mimc.MIMCJobService"
  22. android:enabled="true"
  23. android:exported="false"
  24. android:permission="android.permission.BIND_JOB_SERVICE"
  25. android:process=":mimc" />
  26. <receiver
  27. android:name="com.xiaomi.mimc.receivers.MIMCReceiver"
  28. android:exported="true">
  29. <intent-filter>
  30. <action android:name="com.xiaomi.channel.PUSH_STARTED" />
  31. <action android:name="com.xiaomi.push.service_started" />
  32. <action android:name="com.xiaomi.push.channel_opened" />
  33. <action android:name="com.xiaomi.push.channel_closed" />
  34. <action android:name="com.xiaomi.push.new_msg" />
  35. <action android:name="com.xiaomi.push.kicked" />
  36. </intent-filter>
  37. </receiver>
  38. <receiver android:name="com.xiaomi.mimc.receivers.MIMCPingReceiver">
  39. <intent-filter>
  40. <action android:name="com.xiaomi.push.PING_TIMER" />
  41. </intent-filter>
  42. </receiver>

备注:

  1. 我们将MIMCCoreService / MIMCJobService定义在了mimc进程中。
  2. 开发者也可以配置其运行在任意进程,如果没有配置android:process这个属性,那么它们将运行在应用的主进程中。

用户初始化

  1. MIMCClient.initialize(this);
  2. /**
  3. * @param[appAccount]: 用户在APP帐号系统内的唯一帐号ID
  4. */
  5. MIMCUser user = new MIMCUser(appAccount);

安全认证

参考 安全认证

  1. user.registerTokenFetcher(MIMCTokenFetcher fetcher);
  2. interface MIMCTokenFetcher {
  3. /**
  4. * @note: fetchToken()访问APP应用方自行实现的AppProxyService服务,该服务实现以下功能:
  5. 1. 存储appId/appKey/appSecret(appKey/appSecret不可存储在APP客户端,以防泄漏)
  6. 2. 用户在APP系统内的合法鉴权
  7. 3. 调用小米TokenService服务,并将小米TokenService服务返回结果通过fetchToken()原样返回
  8. * @return: 小米TokenService服务下发的原始数据
  9. */
  10. public String fetchToken();
  11. }

登录

  1. /**
  2. * @note: 用户登录接口,除在APP初始化时调用,APP从后台切换到前台时也建议调用一次
  3. */
  4. user.login();

在线状态变化回调

  1. user.registerOnlineStatusListener(MIMCOnlineStatusListener listener);
  2. interface MIMCOnlineStatusListener {
  3. /**
  4.    * @param[status]: 登录状态,MIMCConstant.STATUS_LOGIN_SUCCESS 在线,MIMCConstant.STATUS_LOGOUT 离线。
  5.    * @param[code]: 状态码
  6.    * @param[msg]: 状态描述
  7. */
  8. public void onStatusChanged(int status, int code, String msg);
  9. }

发送单聊消息

  1. /**
  2. * @param[toAppAccount]: 消息接收者在APP帐号系统内的唯一帐号ID
  3. * @param[payload]: 开发者自定义消息体
  4. * @param[isStore]: 消息是否存储在mimc服务端,true存储,false不存储,默认存储
  5. * @return: 客户端生成的消息ID
  6. */
  7. String packetId = user.sendMessage(String toAppAccount, byte[] payload, boolean isStore);

发送群聊消息

  1. /**
  2. * @param[groupId]: 群ID,也称为topicId
  3. * @param[payload]: 开发者自定义消息体
  4. * @param[isStore]: 消息是否存储在mimc服务端,true存储,false不存储,默认存储
  5. * @return: 客户端生成的消息ID
  6. */
  7. String packetId = user.sendGroupMessage(long groupID, byte[] payload, boolean isStore);

接收消息回调

  1. user.registerMessageHandler(MIMCMessageHandler handler);
  2. interface MIMCMessageHandler {
  3. /**
  4. * @param[packets]: 单聊消息集
  5. * @note: MIMCMessage 单聊消息
  6. * MIMCMessage.packetId: 消息ID
  7. * MIMCMessage.sequence: 序列号
  8. * MIMCMessage.fromAccount: 发送方帐号
  9. * MIMCMessage.toAccount: 接收方帐号
  10. * MIMCMessage.payload: 消息体
  11. * MIMCMessage.timestamp: 时间戳
  12. */
  13. public void handleMessage(List<MIMCMessage> packets);
  14. /**
  15. * @param[packets]: 群聊消息集
  16. * @note: MIMCGroupMessage 群聊消息
  17. * MIMCGroupMessage.packetId: 消息ID
  18. * MIMCGroupMessage.groupId: 群ID
  19. * MIMCGroupMessage.sequence: 序列号
  20. * MIMCGroupMessage.fromAccount: 发送方帐号
  21. * MIMCGroupMessage.payload: 消息体
  22. * MIMCGroupMessage.timestamp: 时间戳
  23. */
  24. public void handleGroupMessage(List<MIMCGroupMessage> packets);
  25. /**
  26. * @param[serverAck]: 服务器返回的serverAck对象
  27. * serverAck.packetId: 客户端生成的消息ID
  28. * serverAck.timestamp: 消息发送到服务器的时间(单位:ms)
  29. * serverAck.sequence: 服务器为消息分配的递增ID,单用户空间内递增唯一,可用于去重/排序
  30. */
  31. public void handleServerAck(MIMCServerAck serverAck);
  32. /**
  33. * @param[message]: 发送超时的单聊消息
  34. */
  35. public void handleSendMessageTimeout(MIMCMessage message);
  36. /**
  37. * @param[groupMessage]: 发送超时的群聊消息
  38. */
  39. public void handleSendGroupMessageTimeout(MIMCGroupMessage groupMessage);
  40. }

注销

  1. user.logout();

回到顶部