网易云信集成视频教程(三):如何通过SDK实现自定义消息?
生活随笔
收集整理的這篇文章主要介紹了
网易云信集成视频教程(三):如何通过SDK实现自定义消息?
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
上期我們介紹了Android如何通過(guò)Uikit集成單聊模塊,第三期視頻教程我們將教大家如何通過(guò)SDK實(shí)現(xiàn)自定義消息。
前期準(zhǔn)備
(https://bbs.yunxin.163.com/forum.php?mod=viewthread&tid=23&highlight=%E9%AA%B0%E5%AD%90)
?
?
代碼部分
大概思路是這樣的
?
注意: 實(shí)現(xiàn)?MsgAttachment?接口的成員都要實(shí)現(xiàn) Serializable。
public abstract class CustomAttachment implements MsgAttachment {protected int type;CustomAttachment(int type) {this.type = type;}public void fromJson(JSONObject data) {if (data != null) {parseData(data);}}@Overridepublic String toJson(boolean send) {return CustomAttachParser.packData(type, packData());}public int getType() {return type;}protected abstract void parseData(JSONObject data);protected abstract JSONObject packData();}?
注意: 成員變量都要實(shí)現(xiàn)Serializable。
public class CrapsAttachment extends CustomAttachment{public enum Craps {one(1, "1"),two(2, "2"),three(3, "3"),four(4, "4"),five(5, "5"),six(6, "6"),;private int value;private String desc;Craps(int value, String desc) {this.value = value;this.desc = desc;}static Craps enumOfValue(int value) {for (Craps direction : values()) {if (direction.getValue() == value) {return direction;}}return one;}public int getValue() {return value;}public String getDesc() {return desc;}}private Craps value;public CrapsAttachment() {super(CustomAttachmentType.Craps);random();}@Overrideprotected void parseData(JSONObject data) {value = Craps.enumOfValue(data.getIntValue("value"));}@Overrideprotected JSONObject packData() {JSONObject data = new JSONObject();data.put("value", value.getValue());return data;}private void random() {int value = new Random().nextInt(6) + 1;this.value = Craps.enumOfValue(value);}public Craps getValue() {return value;}}?
?
?
?
注:第七八九三步可以直接一起做,在Application中初始化SessionHelper,然后在SessionHelper中注冊(cè)解析器以及UI
public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();// SDK初始化(啟動(dòng)后臺(tái)服務(wù),若已經(jīng)存在用戶登錄信息, SDK 將完成自動(dòng)登錄)NIMClient.init(this, null, null);if(NIMUtil.isMainProcess(this)){//初始化UIKITNimUIKit.init(this);SessionHelper.init();}}}?
public class SessionHelper? {private static SessionCustomization p2pCustomization;public static void init(){//解析器NIMClient.getService(MsgService.class).registerCustomAttachmentParser(new CustomAttachParser());//猜拳的UINimUIKit.registerMsgItemViewHolder(GuessAttachment.class, MsgViewHolderGuess.class);//骰子的uiNimUIKit.registerMsgItemViewHolder(CrapsAttachment.class, MsgViewHolderCraps.class);NimUIKit.setCommonP2PSessionCustomization(getP2pCustomization());}// 定制化單聊界面。如果使用默認(rèn)界面,返回null即可private static SessionCustomization getP2pCustomization() {if(p2pCustomization == null){p2pCustomization = new SessionCustomization();// 定制加號(hào)點(diǎn)開后可以包含的操作, 默認(rèn)已經(jīng)有圖片,視頻等消息了ArrayList<BaseAction> actions = new ArrayList<>();actions.add(new GuessAction());actions.add(new CrapsAction());p2pCustomization.actions = actions;}return p2pCustomization;}}這里就完美實(shí)現(xiàn)了Android自定義消息,趕緊去試試吧~
想看更多集成視頻教程,請(qǐng)戳https://netease.im/videoTutorial
總結(jié)
以上是生活随笔為你收集整理的网易云信集成视频教程(三):如何通过SDK实现自定义消息?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【技术干货】TC基础与自动化
- 下一篇: 网易云信5月大事记