• 目录
  • 安卓应用配置修改
    • 包名”com.xiaomi.mimcdemo”必须替换成APP自己的包名
    • 备注:
  • 用户初始化
  • 安全认证
    • 参考 安全认证
  • 登录
  • 在线状态变化回调
  • 发送单聊消息
  • 发送群聊消息
  • 接收消息回调
  • 注销

    目录

    • 安卓应用配置修改
    • 用户初始化
    • 安全认证
    • 登录
    • 在线状态变化回调
    • 发送单聊消息
    • 发送群聊消息
    • 接收消息回调
    • 注销

    安卓应用配置修改

    包名”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();

    回到顶部