package com.hdl.photovoltaic.other;
|
|
import android.content.Context;
|
import android.content.Intent;
|
import android.os.Build;
|
import android.text.TextUtils;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.google.gson.Gson;
|
import com.google.gson.JsonObject;
|
import com.hdl.linkpm.sdk.core.exception.HDLException;
|
import com.hdl.photovoltaic.config.AppConfigManage;
|
import com.hdl.photovoltaic.config.ConstantManage;
|
import com.hdl.photovoltaic.config.UserConfigManage;
|
import com.hdl.photovoltaic.enums.MessageStateType;
|
import com.hdl.photovoltaic.internet.HttpClient;
|
import com.hdl.photovoltaic.internet.api.HttpApi;
|
import com.hdl.photovoltaic.listener.CloudCallBeak;
|
import com.hdl.photovoltaic.push.PushMessageInfoBean;
|
import com.hdl.photovoltaic.ui.BPowerStationActivity;
|
import com.hdl.photovoltaic.ui.bean.MessageBean;
|
import com.hdl.photovoltaic.utils.SharedPreUtils;
|
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
|
|
import org.greenrobot.eventbus.EventBus;
|
|
import java.util.Objects;
|
|
import cn.jpush.android.api.NotificationMessage;
|
|
|
/**
|
* 极光推送信息处理逻辑
|
*/
|
public class HdlPushLogic {
|
private static volatile HdlPushLogic sHdlPushLogic;
|
|
/**
|
* 获取当前对象
|
*
|
* @return HdlAccountLogic
|
*/
|
public static synchronized HdlPushLogic getInstance() {
|
if (sHdlPushLogic == null) {
|
synchronized (HdlPushLogic.class) {
|
if (sHdlPushLogic == null) {
|
sHdlPushLogic = new HdlPushLogic();
|
}
|
}
|
|
}
|
return sHdlPushLogic;
|
}
|
|
/**
|
* 添加推送Token
|
*
|
* @param cloudCallBeak -
|
*/
|
public void pushAdd(CloudCallBeak<String> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_push_add;
|
JsonObject json = new JsonObject();
|
json.addProperty("deviceName", Build.MODEL);//设备名称
|
json.addProperty("deviceType", "Android");//设备类型
|
json.addProperty("produce", AppConfigManage.isIsOnlineServer());//表示是否是正式服务器
|
json.addProperty("pushToken", UserConfigManage.getInstance().getPushToken());//App的推送Token,在极光为RegId
|
json.addProperty("software", "PHOTOVOLTAIC");//软件来源把PHOTOVOLTAIC改成XENTERRA,也就云端说的通道号(channel)
|
json.addProperty("platform", "ALIYUN_APNS");//阿里云的版本的platform
|
// json.addProperty("platform", "FCM");//google的版本的platform
|
json.addProperty("language", UserConfigManage.getInstance().getCurrentAppLanguage());//2.0追加的字段
|
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String pushId) {
|
if (!TextUtils.isEmpty(pushId)) {
|
UserConfigManage.getInstance().setPushId(pushId);
|
UserConfigManage.getInstance().Save();
|
}
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(pushId);
|
}
|
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
/**
|
* 删除推送Token
|
*
|
* @param cloudCallBeak -
|
*/
|
public void pushDel(CloudCallBeak<String> cloudCallBeak) {
|
String requestUrl = HttpApi.POST_push_del;
|
JsonObject json = new JsonObject();
|
json.addProperty("pushId", UserConfigManage.getInstance().getPushId());
|
json.addProperty("pushToken", UserConfigManage.getInstance().getPushToken());
|
|
HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String jsonStr) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onSuccess(jsonStr);
|
}
|
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
if (cloudCallBeak != null) {
|
cloudCallBeak.onFailure(e);
|
}
|
}
|
});
|
|
|
}
|
|
/**
|
* 推送数据统一处理的方法
|
*
|
* @param context 上下文
|
* @param pushMessageInfoBean 推送数据对象实体
|
* @param isOpened true=点击通知栏回调,false=收到推送通知回调;
|
*/
|
public void PushPushCommonData(Context context, PushMessageInfoBean pushMessageInfoBean, boolean isOpened) {
|
if (UserConfigManage.getInstance().isBAccount()) {
|
//添加推送数据到缓存列表中;
|
// this.addPushDataToMemoryList(pushMessageInfoBean);
|
if (isOpened) {
|
// //安装商跳转界面
|
// Intent intent = new Intent(context, BPowerStationActivity.class);
|
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
// intent.putExtra("skip", "skip");//里面判断有这个标识就跳转到消息中心界面
|
// context.startActivity(intent);
|
} else {
|
//应用在前台通知更新住宅消息列表即可
|
BaseEventBus bus = new BaseEventBus();
|
bus.setTopic(ConstantManage.refresh_message_house);
|
bus.setType(ConstantManage.refresh_message_house);
|
EventBus.getDefault().post(bus);
|
}
|
} else {
|
// if (isOpened) {
|
//产品经理说暂时不做 2024年03月29日10:34:44
|
// boolean existsActivity = AppManagerUtils.getAppManager().existsActivity(MessageCenterListActivity.class);
|
// if (existsActivity) {
|
// //存在唯一一种可能就是当前活动窗口就是它
|
// return;
|
// }
|
// //跳转C端消息中心界面
|
// Intent intent = new Intent(context, MessageCenterListActivity.class);
|
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
// context.startActivity(intent);
|
// //不管存不存在这些Activity(找到才移除),都要做这些动作,有可能当前的活动窗口是其中一个
|
// AppManagerUtils.getAppManager().finishActivity(AccountAndSecurityActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(AsRegardsActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(BindMailActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(BindPhoneActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(languageSelectionActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(MeChangePasswordActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(PersonalDataActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(SetActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(TemperatureUnitActivity.class);
|
// AppManagerUtils.getAppManager().finishActivity(WebActivity.class);
|
// //通知uni移除界面
|
// HDLUniMP.UniCallBackBaseBean uniCallBackBaseBean = new HDLUniMP.UniCallBackBaseBean();
|
// uniCallBackBaseBean.setType(HDLUniMP.UNI_EVENT_NOTIFICATION_REMOVE_VIEW);
|
// HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, uniCallBackBaseBean);
|
// }
|
}
|
}
|
|
|
/**
|
* 添加在推送数据到缓存列表中
|
*/
|
private void addPushDataToMemoryList(PushMessageInfoBean pushMessageInfoBean) {
|
try {
|
boolean isPushAddCache = SharedPreUtils.getBoolean("pushAddCache");
|
if (!isPushAddCache) {
|
//有可能删除推送Token接口失败,换账号后,依然也会收到上次账号的推送;
|
return;
|
}
|
if (TextUtils.isEmpty(pushMessageInfoBean.getExpantContent())) {
|
return;
|
}
|
Gson gson = new Gson();
|
MessageBean messageBean = gson.fromJson(pushMessageInfoBean.getExpantContent(), MessageBean.class);
|
if (messageBean == null) {
|
return;
|
}
|
messageBean.setTitle(pushMessageInfoBean.getContent());
|
messageBean.setDeviceDesc(pushMessageInfoBean.getContent());
|
HdlMessageLogic.getInstance().setListMessage(messageBean, 0);
|
HdlLogLogic.print("极光推送---添加在推送数据到缓存列表中---" + new Gson().toJson(pushMessageInfoBean));
|
} catch (Exception ignored) {
|
}
|
}
|
|
/**
|
* 推送数据作转指定推送模型
|
*
|
* @param title 推送标题 可选参数(不存在传空字符)
|
* @param content 推送内容 可选参数(不存在传空字符)
|
* @param data 消息拓展负载数据 可选参数(不存在传空字符)
|
*/
|
public PushMessageInfoBean pushDataProcessing(String title, String content, String data) {
|
try {
|
PushMessageInfoBean pushMessageInfoBean = new PushMessageInfoBean();
|
pushMessageInfoBean.setTitle(title);
|
pushMessageInfoBean.setContent(content);
|
if (TextUtils.isEmpty(data)) {
|
return pushMessageInfoBean;
|
}
|
JSONObject pushDataObject = JSON.parseObject(data);
|
if (pushDataObject.containsKey("expandData")) {
|
String expandDataJson = Objects.requireNonNull(pushDataObject.get("expandData")).toString();
|
if (TextUtils.isEmpty(expandDataJson)) {
|
return pushMessageInfoBean;
|
}
|
pushMessageInfoBean.setExpandData(expandDataJson);
|
JSONObject expandDataObject = JSON.parseObject(expandDataJson);
|
if (expandDataObject.containsKey("messageType")) {
|
String messageType = Objects.requireNonNull(expandDataObject.get("messageType")).toString();
|
if (!TextUtils.isEmpty(messageType)) {
|
pushMessageInfoBean.setMessageType(messageType);
|
}
|
}
|
if (TextUtils.isEmpty(title)) {
|
if (expandDataObject.containsKey("title")) {
|
String messageTitle = Objects.requireNonNull(expandDataObject.get("title")).toString();
|
if (!TextUtils.isEmpty(messageTitle)) {
|
pushMessageInfoBean.setTitle(messageTitle);
|
}
|
}
|
}
|
if (TextUtils.isEmpty(content)) {
|
if (expandDataObject.containsKey("content")) {
|
String messageContent = Objects.requireNonNull(expandDataObject.get("content")).toString();
|
if (!TextUtils.isEmpty(messageContent)) {
|
pushMessageInfoBean.setTitle(messageContent);
|
}
|
}
|
}
|
if (expandDataObject.containsKey("homeId")) {
|
String homeId = Objects.requireNonNull(expandDataObject.get("homeId")).toString();
|
if (!TextUtils.isEmpty(homeId)) {
|
pushMessageInfoBean.setHomeId(homeId);
|
}
|
}
|
if (expandDataObject.containsKey("expantContent")) {
|
String expantContentJson = Objects.requireNonNull(expandDataObject.get("expantContent")).toString();
|
if (!TextUtils.isEmpty(expantContentJson)) {
|
pushMessageInfoBean.setExpantContent(expantContentJson);
|
}
|
JSONObject expantContentObject = JSON.parseObject(expantContentJson);
|
if (expantContentObject.containsKey("aiPrompt")) {
|
String aiPrompt = Objects.requireNonNull(expantContentObject.get("aiPrompt")).toString();
|
if (!TextUtils.isEmpty(aiPrompt)) {
|
pushMessageInfoBean.setAiPrompt(Boolean.parseBoolean(aiPrompt));
|
}
|
}
|
if (expantContentObject.containsKey("msgId")) {
|
String msgId = Objects.requireNonNull(expantContentObject.get("msgId")).toString();
|
if (!TextUtils.isEmpty(msgId)) {
|
pushMessageInfoBean.setMsgId(msgId);
|
}
|
}
|
|
}
|
}
|
return pushMessageInfoBean;
|
} catch (Exception e) {
|
return new PushMessageInfoBean();
|
}
|
}
|
}
|