| | |
| | | import android.content.Intent; |
| | | import android.os.Build; |
| | | import android.os.Bundle; |
| | | import android.os.Handler; |
| | | import android.os.Process; |
| | | import android.os.SystemClock; |
| | | import android.text.TextUtils; |
| | | import android.util.Log; |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.JsonObject; |
| | | import com.google.gson.reflect.TypeToken; |
| | |
| | | import com.hdl.photovoltaic.other.HdlLogLogic; |
| | | import com.hdl.photovoltaic.other.HdlMqttLogic; |
| | | import com.hdl.photovoltaic.other.HdlOtaLogic; |
| | | import com.hdl.photovoltaic.other.HdlPushLogic; |
| | | import com.hdl.photovoltaic.other.HdlResidenceLogic; |
| | | import com.hdl.photovoltaic.other.HdlThreadLogic; |
| | | import com.hdl.photovoltaic.other.HdlUniLogic; |
| | | import com.hdl.photovoltaic.push.PushMessageInfoBean; |
| | | import com.hdl.photovoltaic.services.ForeService; |
| | | import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo; |
| | | import com.hdl.photovoltaic.ui.bean.HouseIdBean; |
| | | import com.hdl.photovoltaic.ui.bean.MessageBean; |
| | | import com.hdl.photovoltaic.ui.bean.OidBean; |
| | | import com.hdl.photovoltaic.ui.message.MessageInfoActivity; |
| | | import com.hdl.photovoltaic.ui.newC.PowerStationsListActivity; |
| | | import com.hdl.photovoltaic.ui.newC.PowerStationsMoveActivity; |
| | | import com.hdl.photovoltaic.uni.HDLUniMP; |
| | | import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; |
| | | import com.hdl.photovoltaic.utils.AppManagerUtils; |
| | | import com.hdl.photovoltaic.utils.BadgeUtils; |
| | | import com.hdl.sdk.link.HDLLinkLocalSdk; |
| | | import com.hdl.sdk.link.common.event.EventListener; |
| | | import com.hdl.sdk.link.core.bean.LinkResponse; |
| | |
| | | |
| | | import java.lang.reflect.Type; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | import cn.jpush.android.api.JPushInterface; |
| | | |
| | |
| | | |
| | | private EventListener allTopicsListener; |
| | | private int backPressTimes; |
| | | |
| | | private volatile boolean isRunning = false; |
| | | |
| | | @Override |
| | | public Object getContentView() { |
| | |
| | | this.registerAllTopicsListener(); |
| | | //初始化mqtt客户端 |
| | | this.initMqttClient(); |
| | | //上传极光注册ID到云端 |
| | | this.pushTokens(); |
| | | // //上传极光注册ID到云端 |
| | | // this.pushTokens(); |
| | | //上传推动令牌到云端(谷歌FCM推送) |
| | | this.sendPushTokenToServer(UserConfigManage.getInstance().getPushToken()); |
| | | //点击通知栏消息进来 |
| | | this.OpenSpecifiedPage(getIntent(), "onBindView"); |
| | | //获取云端脚本 |
| | | HdlESLocalJsonLogic.getInstance().getAllHdlESLocalJson(); |
| | | // mForegroundService= new Intent(this, ForeService.class); |
| | |
| | | // this.portConflictDialog(); |
| | | } |
| | | |
| | | @Override |
| | | protected void onNewIntent(Intent intent) { |
| | | super.onNewIntent(intent); |
| | | //AndroidManifest.xml 需要添加启动模式android:launchMode="singleTask"才执行这个方法 |
| | | OpenSpecifiedPage(intent, "onNewIntent"); |
| | | } |
| | | |
| | | /** |
| | | * 点击通知栏消息进来 |
| | | */ |
| | | private void OpenSpecifiedPage(Intent intent, String tag) { |
| | | Log.d("==========", tag); |
| | | try { |
| | | String data = getIntentExpantData(intent); |
| | | if (TextUtils.isEmpty(data)) { |
| | | return; |
| | | } |
| | | PushMessageInfoBean pushMessageInfoBean = HdlPushLogic.getInstance().pushDataProcessing("", "", data); |
| | | if (TextUtils.isEmpty(pushMessageInfoBean.getMsgId())) { |
| | | return; |
| | | } |
| | | HDLUniMPSDKManager.uinEnabled = false; |
| | | if (tag.equals("onNewIntent")) { |
| | | HDLUniMPSDKManager.uinEnabled = false; |
| | | //C端启动App自动打开小程序电站详情界面 |
| | | if (null != HDLUniMPSDKManager.getInstance().getUniMP()) { |
| | | HDLUniMPSDKManager.getInstance().getUniMP().closeUniMP(); |
| | | } |
| | | startAppAutomaticallyOpenUni(); |
| | | } |
| | | CheckUniOn(pushMessageInfoBean); |
| | | |
| | | |
| | | } catch (Exception e) { |
| | | Log.d("错误", " " + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | public void startAppAutomaticallyOpenUni() { |
| | | new Thread(new Runnable() { |
| | | @Override |
| | |
| | | // } |
| | | } |
| | | }); |
| | | } |
| | | }).start(); |
| | | } |
| | | |
| | | /** |
| | | * 检测uni是否打开,检测最长时间为5s,检测成功后打开原生消息界面,关闭返回主界面 |
| | | */ |
| | | public void CheckUniOn(PushMessageInfoBean pushMessageInfoBean) { |
| | | if (pushMessageInfoBean == null) return; |
| | | final long startTime = System.currentTimeMillis(); |
| | | new Thread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | while (System.currentTimeMillis() - startTime < 5 * 1000) { |
| | | if (HDLUniMPSDKManager.uinEnabled) { |
| | | runOnUiThread(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | if (pushMessageInfoBean.isAiPrompt()) { |
| | | HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_open_ai_push_message, new HDLUniMP.UniCallBackBaseBean()); |
| | | } else { |
| | | MessageBean messageBean = new MessageBean(); |
| | | messageBean.setMsgId(Long.valueOf(pushMessageInfoBean.getMsgId())); |
| | | Intent intentMessageInfoActivity = new Intent(); |
| | | intentMessageInfoActivity.setClass(_mActivity, MessageInfoActivity.class); |
| | | intentMessageInfoActivity.putExtra("messageBean", JSONObject.toJSONString(messageBean)); |
| | | startActivity(intentMessageInfoActivity); |
| | | } |
| | | |
| | | } |
| | | }); |
| | | break; |
| | | } |
| | | SystemClock.sleep(1000); |
| | | } |
| | | |
| | | } |
| | | }).start(); |
| | | } |
| | |
| | | MqttRecvClient.getInstance().checkAndsubscribeAllTopics(topicHome);//订阅【电站】消息 |
| | | |
| | | |
| | | } else if (event.getTopic().contains(ConstantManage.refresh_push_token)) { |
| | | //pushToken更新 |
| | | sendPushTokenToServer(UserConfigManage.getInstance().getPushToken()); |
| | | } |
| | | } |
| | | |
| | |
| | | @Override |
| | | protected void onDestroy() { |
| | | super.onDestroy(); |
| | | HdlUniLogic.getInstance().checkRemoveOtherUniMPEventCallBack(); |
| | | // HdlUniLogic.getInstance().checkRemoveOtherUniMPEventCallBack(); |
| | | //移除监听 |
| | | HDLLinkLocalSdk.getInstance().removeAllTopicsListener(allTopicsListener); |
| | | // stopService(mForegroundService); |
| | |
| | | public void onSuccess(String pushId) { |
| | | |
| | | if (!TextUtils.isEmpty(pushId)) { |
| | | UserConfigManage.getInstance().setRegistrationID(finalRegistrationID); |
| | | UserConfigManage.getInstance().setPushToken(finalRegistrationID); |
| | | UserConfigManage.getInstance().setPushId(pushId); |
| | | UserConfigManage.getInstance().Save(); |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * 上传 token 到服务器 |
| | | * |
| | | * @param token 令牌 |
| | | */ |
| | | private void sendPushTokenToServer(final String token) { |
| | | if (TextUtils.isEmpty(token)) { |
| | | return; |
| | | } |
| | | HdlResidenceLogic.getInstance().pushAdd(new CloudCallBeak<String>() { |
| | | @Override |
| | | public void onSuccess(String pushId) { |
| | | |
| | | if (!TextUtils.isEmpty(pushId)) { |
| | | UserConfigManage.getInstance().setToken(token); |
| | | UserConfigManage.getInstance().setPushId(pushId); |
| | | UserConfigManage.getInstance().Save(); |
| | | } |
| | | HdlLogLogic.print("添加令牌到云端 PushToken:" + UserConfigManage.getInstance().getPushToken() + " pushId:" + pushId, true); |
| | | } |
| | | |
| | | @Override |
| | | public void onFailure(HDLException e) { |
| | | HdlLogLogic.print("添加令牌到云端失败 PushToken:" + UserConfigManage.getInstance().getPushToken() + " 错误:" + e.getMessage(), true); |
| | | } |
| | | }); |
| | | } |
| | |
| | | HDLLinkLocalSdk.getInstance().registerAllTopicsListener(allTopicsListener); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 处理从通知点击带来的数据,这里获取数据,然后透传给主界面做处理 |
| | | * |
| | | * @return 返回附加数据 |
| | | */ |
| | | private String getIntentExpantData(Intent intent) { |
| | | try { |
| | | if (intent == null) { |
| | | return ""; |
| | | } |
| | | // 处理从通知点击带来的数据,这里获取数据,然后透传给主界面做处理 |
| | | if (intent.getExtras() != null) { |
| | | for (String key : intent.getExtras().keySet()) { |
| | | if (key.equals("pushData")) { |
| | | return Objects.requireNonNull(intent.getExtras().get(key)).toString(); |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | return ""; |
| | | } |
| | | return ""; |
| | | } |
| | | } |