package com.hdl.photovoltaic.other; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; import org.json.JSONObject; import io.dcloud.feature.unimp.DCUniMPJSCallback; /** * uni小程序的逻辑 */ public class HdlUniLogic implements HDLUniMPSDKManager.IOnOtherUniMPEventCallBack { private static volatile HdlUniLogic sHdlUniLogic; /** * 获取当前对象 * * @return HdlAccountLogic */ public static synchronized HdlUniLogic getInstance() { if (sHdlUniLogic == null) { synchronized (HdlUniLogic.class) { if (sHdlUniLogic == null) { sHdlUniLogic = new HdlUniLogic(); } } } return sHdlUniLogic; } /** * 原生接收uni发来的数据 * * @param appId -uni小程序指定的appId * @param event -uni小程序发来数据 * @param data JSONObject com.alibaba.fastjson解析处理 * @param callback callback.invoke(JSONObject) 用com.alibaba.fastjson */ @Override public void onOtherUniMPEventReceive(String appId, String event, Object data, DCUniMPJSCallback callback) { if (!HDLUniMP.UNI_APP_ID.equals(appId)) { return; } try { org.json.JSONObject jsonObject = null; if (data != null) { jsonObject = new org.json.JSONObject(data.toString()); } if (HDLUniMP.UNI_EVENT_HOME_CREATION.equals(event)) { if (callback != null) { callback.invoke(null); } } HdlLogLogic.print("uni===原生接收uni发来的数据", event + "\r\n" + data); } catch (Exception e) { HdlLogLogic.print("uni===原生接收uni发来的数据", e.getMessage()); } } /** * 原生打开uni指定页面 * * @param path 打开路径 * @param jsonObject 附件数据(没有数据填null) */ public void openUniMP(String path, JSONObject jsonObject) { JSONObject json = this.createdJsonDate(jsonObject); HDLUniMPSDKManager.getInstance().openUniMP(HDLUniMP.UNI_APP_ID, path, json, HdlUniLogic.this); } /** * 原生【主动】向小程序发送通知事件 * 注意:需要提前小程序在运行才可成功 * * @param topic 主题 * @param body 附件数据(没有数据填null) */ public void sendUni(String topic, String body) { try { HDLUniMP.UniCallBackBaseBean callBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); callBackBaseBean.setTopic(topic); callBackBaseBean.setData(body); HDLUniMPSDKManager.getInstance().sendUniMPEvent(HDLUniMP.UNI_APP_ID, HDLUniMP.UNI_APP_ID, callBackBaseBean.getJSONObject()); } catch (Exception e) { HdlLogLogic.print("uni===原生主动向小程序发送通知事件", e.getMessage()); } } /** * 检测是否当前页面注册的callback,是的话则移除 */ public void checkRemoveOtherUniMPEventCallBack() { HDLUniMPSDKManager.getInstance().checkRemoveOtherUniMPEventCallBack(this); } /** * 组装uni发送数据格式 * * @param data -附件数据(没有数据填null) * @return JSONObject */ public JSONObject createdJsonDate(JSONObject data) { HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); try { if (data == null) { data = new JSONObject(); } data.put("token", UserConfigManage.getInstance().getToken()); uniCallBackBaseBean.setData(data); return uniCallBackBaseBean.getJSONObject(); } catch (Exception e) { HdlLogLogic.print("uni===组装uni发送数据格式", e.getMessage()); } return new JSONObject(); } }