From ab666e86e667e63e24b6da9140e376b9aaf4b5aa Mon Sep 17 00:00:00 2001 From: xiaoyan Date: Tue, 5 Dec 2023 15:29:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=B7=B2=E9=A2=86?= =?UTF-8?q?=E5=8F=96=E5=88=97=E8=A1=A8=E6=97=B6=E9=97=B4=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=8E=A8=E9=80=81=E6=B6=88=E6=81=AF=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E4=B8=8A=E6=8A=A5=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../activity/AutoTakePicture4PoiActivity.java | 5 +- .../AutoTakePicture4PoiVideoActivity.java | 4 +- .../activity/AutoTakePictureActivity.java | 3 +- .../outdoor/activity/HomeActivity.java | 37 ++++ .../com/navinfo/outdoor/api/Constant.java | 1 + .../outdoor/bean/CommonRequestSend.java | 182 ++++++++++++------ .../outdoor/fragment/GatherGetFragment.java | 6 +- .../navinfo/outdoor/http/HttpInterface.java | 6 + .../com/navinfo/outdoor/http/OkGoBuilder.java | 17 +- .../outdoor/receiver/MessageReceiver.java | 39 ++++ .../navinfo/outdoor/util/FlushTokenUtil.java | 46 +++-- 12 files changed, 262 insertions(+), 88 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c0f3bec..b853278 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,8 +37,8 @@ android { applicationId "com.navinfo.outdoor" minSdkVersion 24 targetSdkVersion 30 - versionCode 119 - versionName "8.231201-测试版" + versionCode 120 + versionName "8.231205-测试版" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { diff --git a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePicture4PoiActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePicture4PoiActivity.java index b79eb06..447bf59 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePicture4PoiActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePicture4PoiActivity.java @@ -120,8 +120,10 @@ import org.locationtech.jts.geom.Point; import java.io.File; import java.io.IOException; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -176,6 +178,7 @@ public class AutoTakePicture4PoiActivity extends BaseActivity implements View.On private LocationRecorderDao recorderDao; private PoiDao poiDao; private SimpleDateFormat picFormatter = new SimpleDateFormat("yyyyMMdd HHmmss"); + private DateFormat receiverDateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");; // 接收任务时间的格式化对象 private Button btnClearMatch, btnStopPicture; private Point lastPositionPoint; // 最近一次的定位,用来过滤距离较近的点位 private static int BRIGHTNESS=40, FRAMENESS=30; @@ -1287,7 +1290,7 @@ public class AutoTakePicture4PoiActivity extends BaseActivity implements View.On poiListEntity.setTaskId(poiEntity.getTaskId()); poiListEntity.setName(listBean.getName()); poiListEntity.setMemo(listBean.getMemo()); - poiListEntity.setCreateTime(listBean.getEndDate()); + poiListEntity.setCreateTime(receiverDateFormate.format(new Date())); poiListEntity.setAddress(listBean.getAddress()); poiListEntity.setType(listBean.getType()); poiListEntity.setPrecision(String.valueOf(listBean.getPrice())); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePicture4PoiVideoActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePicture4PoiVideoActivity.java index 75f1dc1..9b8bf68 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePicture4PoiVideoActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePicture4PoiVideoActivity.java @@ -122,6 +122,7 @@ import org.locationtech.jts.geom.Point; import java.io.File; import java.io.IOException; +import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -180,6 +181,7 @@ public class AutoTakePicture4PoiVideoActivity extends BaseActivity implements Vi private LocationRecorderDao recorderDao; private PoiDao poiDao; private SimpleDateFormat picFormatter = new SimpleDateFormat("yyyyMMdd HHmmss"); + private DateFormat receiverDateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");; // 接收任务时间的格式化对象 private Button btnClearMatch, btnStopPicture; private Point lastPositionPoint; // 最近一次的定位,用来过滤距离较近的点位 private static int BRIGHTNESS=40, FRAMENESS=30; @@ -1146,7 +1148,7 @@ public class AutoTakePicture4PoiVideoActivity extends BaseActivity implements Vi poiListEntity.setTaskId(poiEntity.getTaskId()); poiListEntity.setName(listBean.getName()); poiListEntity.setMemo(listBean.getMemo()); - poiListEntity.setCreateTime(listBean.getEndDate()); + poiListEntity.setCreateTime(receiverDateFormate.format(new Date())); poiListEntity.setAddress(listBean.getAddress()); poiListEntity.setType(listBean.getType()); poiListEntity.setPrecision(String.valueOf(listBean.getPrice())); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java index 2c17702..2cd092f 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/AutoTakePictureActivity.java @@ -227,6 +227,7 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic private LocationRecorderDao recorderDao; private PoiDao poiDao; private SimpleDateFormat picFormatter = new SimpleDateFormat("yyyyMMdd HHmmss"); + private DateFormat receiverDateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");; // 接收任务时间的格式化对象 private Button btnClearMatch, btnStopPicture; private Point lastPositionPoint; // 最近一次的定位,用来过滤距离较近的点位 private static int BRIGHTNESS=40, FRAMENESS=30; @@ -1338,7 +1339,7 @@ public class AutoTakePictureActivity extends BaseActivity implements View.OnClic poiListEntity.setTaskId(poiEntity.getTaskId()); poiListEntity.setName(listBean.getName()); poiListEntity.setMemo(listBean.getMemo()); - poiListEntity.setCreateTime(listBean.getEndDate()); + poiListEntity.setCreateTime(receiverDateFormate.format(new Date())); poiListEntity.setAddress(listBean.getAddress()); poiListEntity.setType(listBean.getType()); poiListEntity.setPrecision(String.valueOf(listBean.getPrice())); diff --git a/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java b/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java index 1e61446..03cb96a 100644 --- a/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java +++ b/app/src/main/java/com/navinfo/outdoor/activity/HomeActivity.java @@ -1,21 +1,26 @@ package com.navinfo.outdoor.activity; import com.elvishew.xlog.XLog; +import com.github.lazylibrary.util.PreferencesUtils; import com.github.lazylibrary.util.ShellUtils; import com.google.gson.Gson; import com.kongzue.dialog.interfaces.OnDialogButtonClickListener; import com.kongzue.dialog.util.BaseDialog; import com.kongzue.dialog.util.DialogSettings; import com.kongzue.dialog.v3.MessageDialog; +import com.lzy.okgo.model.HttpParams; import com.navinfo.ocr.OCRManager; import com.navinfo.outdoor.api.Constant; import com.navinfo.outdoor.api.UserApplication; import com.navinfo.outdoor.base.BaseActivity; +import com.navinfo.outdoor.bean.CommonRequestSend; +import com.navinfo.outdoor.bean.CommonResponse; import com.navinfo.outdoor.bean.NotificationBean; import com.navinfo.outdoor.fragment.FindFragment; import com.navinfo.outdoor.fragment.MineFragment; import com.navinfo.outdoor.fragment.RecordFragment; import com.navinfo.outdoor.fragment.TreasureFragment; +import com.navinfo.outdoor.http.Callback; import com.navinfo.outdoor.http.HttpInterface; import com.navinfo.outdoor.room.PoiDatabase; import com.navinfo.outdoor.service.ForegroundCoreService; @@ -131,6 +136,8 @@ public class HomeActivity extends BaseActivity { } // 开启前台服务 startService(new Intent(getApplicationContext(), ForegroundCoreService.class)); + // 使用Shared文件记录最近一次的登陆Id和推送需要的请求地址,防止通过推送响应时请求地址为null的问题 + PreferencesUtils.putString(HomeActivity.this, "MESSAGE_PUSH_GET_OR_CLICK_UPLOAD", HttpInterface.MESSAGE_PUSH_GET_OR_CLICK_UPLOAD); } else { finish(); } @@ -160,6 +167,7 @@ public class HomeActivity extends BaseActivity { if (intent != null) { String intentFrom = intent.getStringExtra(Constant.NOTIFYCATION_INTENT_FROM); if (intentFrom != null){ + int messageId = intent.getIntExtra(Constant.NOTIFYCATION_ID, -1); if (intentFrom.equals("recommandTask")) { // 从notifycation跳转过来的 // 获取要跳转的定位点位和zoom,自动跳转到该位置后刷新地图界面 @@ -178,6 +186,7 @@ public class HomeActivity extends BaseActivity { msg.what = Constant.EVENT_WHAT_NOTIFYCATION_RECOMMAND_TASK; EventBus.getDefault().post(msg); } + uploadReceivePushMessage(HomeActivity.this, messageId+"", 1); } else if (intentFrom.equals("normalNotification")) { String title = intent.getStringExtra(Constant.NOTIFYCATION_TITLE); String content = intent.getStringExtra(Constant.NOTIFYCATION_CONTENT); @@ -186,11 +195,39 @@ public class HomeActivity extends BaseActivity { MessageDialog.show(HomeActivity.this, title, content, "确定") .setCancelable(false); } + uploadReceivePushMessage(HomeActivity.this, messageId+"", 1); } } } } + /** + * 上报获取到推送消息的时间给服务端 + * @param messageId 推送消息对应的id + * @param type 0-获取到消息,1-点击推送消息 + * */ + private void uploadReceivePushMessage(Context mContext, String messageId, int type) { + HttpParams httpParams = new HttpParams(); + httpParams.put("messageId", messageId); + httpParams.put("type", type); + CommonRequestSend commonRequestSend = new CommonRequestSend>(); + commonRequestSend.postMethodCommonSilence(mContext, PreferencesUtils.getString(mContext, "MESSAGE_PUSH_GET_OR_CLICK_UPLOAD")/*从SP文件中获取*/, + httpParams, Constant.DEFAULT_TIME_OUT, new Callback>() { + @Override + public void onSuccess(CommonResponse response, int id) { + if (response.getCode() == 200) { + // 推送消息获取时间上报成功 + XLog.d("上报推送接收成功:"+response.getMessage()+"-messageId:"+messageId); + } + } + + @Override + public void onError(Throwable e, int id) { + XLog.d("上报推送接收失败:"+e.getMessage()+"-messageId:"+messageId); + } + }, new CommonResponse().getClass()); + } + private void initUM() { //自定义点击通知时的打开动作 UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() { diff --git a/app/src/main/java/com/navinfo/outdoor/api/Constant.java b/app/src/main/java/com/navinfo/outdoor/api/Constant.java index 2449a6c..25c6956 100644 --- a/app/src/main/java/com/navinfo/outdoor/api/Constant.java +++ b/app/src/main/java/com/navinfo/outdoor/api/Constant.java @@ -293,4 +293,5 @@ public class Constant { public static String NOTIFYCATION_TASK_ZOOM = "NOTIFYCATION_TASK_ZOOM"; public static String NOTIFYCATION_TITLE = "NOTIFYCATION_TITLE"; public static String NOTIFYCATION_CONTENT = "NOTIFYCATION_CONTENT"; + public static String NOTIFYCATION_ID = "NOTIFYCATION_ID"; } diff --git a/app/src/main/java/com/navinfo/outdoor/bean/CommonRequestSend.java b/app/src/main/java/com/navinfo/outdoor/bean/CommonRequestSend.java index 005ebe8..bd1acf5 100644 --- a/app/src/main/java/com/navinfo/outdoor/bean/CommonRequestSend.java +++ b/app/src/main/java/com/navinfo/outdoor/bean/CommonRequestSend.java @@ -1,6 +1,7 @@ package com.navinfo.outdoor.bean; import android.app.Activity; +import android.content.Context; import android.util.Log; import android.widget.Toast; @@ -45,36 +46,40 @@ import okhttp3.ResponseBody; public class CommonRequestSend { public void getMethodCommon(Activity mContext, String url, HttpParams params, int timeOut, Callback> callback, Class tClass) { try { - Response> response = ((GetRequest>) obitainRequest(mContext, url, params, timeOut, 0, tClass)) + ((GetRequest>) obitainRequest(url, params, timeOut, 0, tClass)) .adapt() - .execute(); - if (response.code() == 200) { - if (response.body().getCode() == 200) { - callback.onSuccess(response.body(), 1); - } else if (response.body().getCode() == 230){ - FlushTokenUtil.flushToken(mContext); - Toast.makeText(mContext, "token过期,请重新登录后再试...", Toast.LENGTH_LONG).show(); - Throwable throwable = new Throwable("token过期,请重新登录后再试..."); - callback.onError(throwable, -1); - /* - * 友盟+ - * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 - */ - UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); - } else { - Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); - Throwable throwable = new Throwable(response.message()); - callback.onError(throwable, -2); - /* - * 友盟+ - * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 - */ - UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); - } + .execute(new MyJsonCallback>() { + @Override + public void onSuccess(Response> response) { + if (response.code() == 200) { + if (response.body().getCode() == 200) { + callback.onSuccess(response.body(), 1); + } else if (response.body().getCode() == 230){ + FlushTokenUtil.flushToken(mContext); + Toast.makeText(mContext, "token过期,请重新登录后再试...", Toast.LENGTH_LONG).show(); + Throwable throwable = new Throwable("token过期,请重新登录后再试..."); + callback.onError(throwable, -1); + /* + * 友盟+ + * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 + */ + UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); + } else { + Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); + Throwable throwable = new Throwable(response.message()); + callback.onError(throwable, -2); + /* + * 友盟+ + * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 + */ + UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); + } - } else { - Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); - } + } else { + Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); + } + } + }); } catch (Exception e) { e.printStackTrace(); Throwable throwable = e; @@ -92,7 +97,7 @@ public class CommonRequestSend { public CommonResponse getMethodCommonSync(Activity mContext, String url, HttpParams params, int timeOut, Class tClass) { try { - Response> response = ((GetRequest>) obitainRequest(mContext, url, params, timeOut, 0, tClass)) + Response> response = ((GetRequest>) obitainRequest(url, params, timeOut, 0, tClass)) .adapt() .execute(); if (response.code() == 200) { @@ -117,38 +122,97 @@ public class CommonRequestSend { } } + /** + * 发送post请求,但是无需重试,无需检查是否成功登录 + * 这个方法用于发送一些不重要的请求,当用户本地token过期时,有可能需要重新登录 + * */ + public void postMethodCommonSilence(Context mContext, String url, HttpParams params, int timeOut, Callback> callback, Class tClass) { + try { + ((PostRequest>) obitainRequest(url, params, timeOut, 1, tClass)) + .adapt() + .execute(new MyJsonCallback>() { + @Override + public void onSuccess(Response> response) { + if (response.code() == 200) { + if (response.body().getCode() == 200) { + callback.onSuccess(response.body(), 1); + } else if (response.body().getCode() == 230){ + FlushTokenUtil.flushTokenSilence(mContext); + Toast.makeText(mContext, "token过期,请重新登录后再试...", Toast.LENGTH_LONG).show(); + Throwable throwable = new Throwable("token过期,请重新登录后再试..."); + callback.onError(throwable, -1); + /* + * 友盟+ + * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 + */ + UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); + } else { + Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); + Throwable throwable = new Throwable(response.message()); + callback.onError(throwable, -2); + /* + * 友盟+ + * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 + */ + UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); + } + + } else { + Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); + } + } + }); + } catch (Exception e) { + e.printStackTrace(); + Throwable throwable = e; + if (throwable != null) { + throwable.printStackTrace(); + callback.onError(throwable, -3); + } + /* + * 友盟+ + * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 + */ + UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); + } + } + public void postMethodCommon(Activity mContext, String url, HttpParams params, int timeOut, Callback> callback, Class tClass) { try { - Response> response = ((GetRequest>) obitainRequest(mContext, url, params, timeOut, 1, tClass)) + ((PostRequest>) obitainRequest(url, params, timeOut, 1, tClass)) .adapt() - .execute(); - if (response.code() == 200) { - if (response.body().getCode() == 200) { - callback.onSuccess(response.body(), 1); - } else if (response.body().getCode() == 230){ - FlushTokenUtil.flushToken(mContext); - Toast.makeText(mContext, "token过期,请重新登录后再试...", Toast.LENGTH_LONG).show(); - Throwable throwable = new Throwable("token过期,请重新登录后再试..."); - callback.onError(throwable, -1); - /* - * 友盟+ - * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 - */ - UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); - } else { - Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); - Throwable throwable = new Throwable(response.message()); - callback.onError(throwable, -2); - /* - * 友盟+ - * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 - */ - UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); - } + .execute(new MyJsonCallback>() { + @Override + public void onSuccess(Response> response) { + if (response.code() == 200) { + if (response.body().getCode() == 200) { + callback.onSuccess(response.body(), 1); + } else if (response.body().getCode() == 230){ + FlushTokenUtil.flushToken(mContext); + Toast.makeText(mContext, "token过期,请重新登录后再试...", Toast.LENGTH_LONG).show(); + Throwable throwable = new Throwable("token过期,请重新登录后再试..."); + callback.onError(throwable, -1); + /* + * 友盟+ + * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 + */ + UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); + } else { + Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); + Throwable throwable = new Throwable(response.message()); + callback.onError(throwable, -2); + /* + * 友盟+ + * 使用自定义错误,查看时请在错误列表页面选择【自定义异常】 + */ + UMCrash.generateCustomLog("网络请求报错-位置:OKGOBuilder" + throwable, "UmengException"); + } - } else { - Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); - } + } else { + Toast.makeText(mContext, response.message(), Toast.LENGTH_LONG).show(); + } + } + }); } catch (Exception e) { e.printStackTrace(); Throwable throwable = e; @@ -166,7 +230,7 @@ public class CommonRequestSend { public CommonResponse postMethodCommonSync(Activity mContext, String url, HttpParams params, int timeOut, List files, Class tClass) { try { - PostRequest> postRequest = (PostRequest>) obitainRequest(mContext, url, params, timeOut, 1, tClass); + PostRequest> postRequest = (PostRequest>) obitainRequest(url, params, timeOut, 1, tClass); if (files!=null) { postRequest.addFileParams("file", files); } @@ -199,7 +263,7 @@ public class CommonRequestSend { * 生成通用请求 * @param requestType 0-默认为get请求,非0-post请求 * */ - private Request obitainRequest(Activity mContext, String url, HttpParams params, int timeOut, int requestType, Class clazz) throws Exception{ + private Request obitainRequest(String url, HttpParams params, int timeOut, int requestType, Class clazz) throws Exception{ if (!NetWorkUtils.iConnected(UserApplication.userApplication)) { // 当前网络不可用 throw new Exception("网络不可用"); } diff --git a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java index cc83ade..430227c 100644 --- a/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java +++ b/app/src/main/java/com/navinfo/outdoor/fragment/GatherGetFragment.java @@ -471,7 +471,7 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe chargingStationEntity.setStation_type(stationBean.getSptype()); chargingStationEntity.setName(stationBean.getName()); chargingStationEntity.setDescribe(stationBean.getMemo()); - chargingStationEntity.setCreateTime(stationBean.getEndDate()); +// chargingStationEntity.setCreateTime(stationBean.getEndDate()); chargingStationEntity.setUnReceivedTime(stationBean.getUnReceivedTime()); chargingStationEntity.setPrecision(stationBean.getPrice() + ""); chargingStationEntity.setAddress(stationBean.getAddress()); @@ -925,7 +925,7 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe poiListEntity.setTaskId(poiEntity.getTaskId()); poiListEntity.setName(listBean.getName()); poiListEntity.setDescribe(listBean.getMemo()); - poiListEntity.setCreateTime(listBean.getEndDate()); +// poiListEntity.setCreateTime(listBean.getEndDate()); poiListEntity.setUnReceivedTime(listBean.getUnReceivedTime()); poiListEntity.setAddress(listBean.getAddress()); poiListEntity.setType(listBean.getType()); @@ -1054,7 +1054,7 @@ public class GatherGetFragment extends BaseFragment implements View.OnClickListe poiListEntity.setWork_type(poiEntity.getWork_type()); poiListEntity.setName(listBean.getName()); poiListEntity.setMemo(listBean.getMemo()); - poiListEntity.setCreateTime(listBean.getEndDate()); +// poiListEntity.setCreateTime(listBean.getEndDate()); poiListEntity.setUnReceivedTime(listBean.getUnReceivedTime()); poiListEntity.setAddress(listBean.getAddress()); poiListEntity.setType(listBean.getType()); diff --git a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java index 993e2e1..a26693a 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java +++ b/app/src/main/java/com/navinfo/outdoor/http/HttpInterface.java @@ -1,5 +1,9 @@ package com.navinfo.outdoor.http; +import android.content.SharedPreferences; + +import com.github.lazylibrary.util.PreferencesUtils; + public class HttpInterface { // // 开发 // public static final String IP = "http://dtxbmaps.navinfo.com/dtxb/dev/m4";//开发地址 @@ -145,6 +149,7 @@ public class HttpInterface { //dtxbmaps.navinfo.com/dtxb_test/m4/msgList/InfoPush/28/push?type=0 public static String MESSAGE_INFO_PUSH = null;//消息通知 public static String MESSAGE_LATEST_PUSH = null;//最新的推荐任务推送信息获取 + public static String MESSAGE_PUSH_GET_OR_CLICK_UPLOAD = null;//推送消息的获取和点击时间上报 public static String UPDATE_PHONE_NUM_URL = null;//消息通知 public static String CREATE_UPLOAD_TASK = null;//创建断点续传任务 public static String UPLOAD_SPLITE_TASK = null;//执行断点续传 @@ -189,6 +194,7 @@ public class HttpInterface { EXAM_SUBMIT = IP + MSG_LIST_PATH + "findAndMessage/" + userId + "/submitExam";//发现 -能力测评提交试卷 post MESSAGE_INFO_PUSH = IP + MSG_LIST_PATH + "InfoPush/" + userId + "/push";//寻宝-消息通知 MESSAGE_LATEST_PUSH = IP + MSG_LIST_PATH + "UserMessage/" + userId + "/getLatestMessage";//寻宝首页-获取最新推送推荐任务 + MESSAGE_PUSH_GET_OR_CLICK_UPLOAD = IP + MSG_LIST_PATH + "UserMessage/" + userId + "/feedbackUserMessage";//寻宝-推送数据获取和点击的时间上报 /* 提现 金额 * Path=/m4/price/ diff --git a/app/src/main/java/com/navinfo/outdoor/http/OkGoBuilder.java b/app/src/main/java/com/navinfo/outdoor/http/OkGoBuilder.java index f086696..d6f69e2 100644 --- a/app/src/main/java/com/navinfo/outdoor/http/OkGoBuilder.java +++ b/app/src/main/java/com/navinfo/outdoor/http/OkGoBuilder.java @@ -1,6 +1,7 @@ package com.navinfo.outdoor.http; import android.app.Activity; +import android.content.Context; import android.widget.Toast; import com.elvishew.xlog.XLog; @@ -44,7 +45,7 @@ import okhttp3.RequestBody; */ public class OkGoBuilder { - private Activity activity; + private Context activity; /** * 请求网址 */ @@ -87,7 +88,7 @@ public class OkGoBuilder { return mOkGoBuilder; } - public OkGoBuilder Builder(Activity activity) { + public OkGoBuilder Builder(Context activity) { this.activity = activity; return this; } @@ -173,7 +174,8 @@ public class OkGoBuilder { if (response.code() == 200) { callback.onSuccess(response.body(), 1); } else { - ToastUtils.Message(activity, response.message()); + com.github.lazylibrary.util.ToastUtils.showToast(activity, response.message()); +// ToastUtils.Message(activity, response.message()); } } @@ -223,7 +225,8 @@ public class OkGoBuilder { if (response.code() == 200) { callback.onSuccess(response.body(), 1); } else { - ToastUtils.Message(activity, response.message()); + com.github.lazylibrary.util.ToastUtils.showToast(activity, response.message()); +// ToastUtils.Message(activity, response.message()); } } @@ -345,7 +348,8 @@ public class OkGoBuilder { if (response.code() == 200) { callback.onSuccess(response.body(), 1); } else { - ToastUtils.Message(activity, response.message()); + com.github.lazylibrary.util.ToastUtils.showToast(activity, response.message()); +// ToastUtils.Message(activity, response.message()); } } @@ -398,7 +402,8 @@ public class OkGoBuilder { if (response.code() == 200) { callback.onSuccess(response.body(), 1); } else { - ToastUtils.Message(activity, response.message()); + com.github.lazylibrary.util.ToastUtils.showToast(activity, response.message()); +// ToastUtils.Message(activity, response.message()); } } diff --git a/app/src/main/java/com/navinfo/outdoor/receiver/MessageReceiver.java b/app/src/main/java/com/navinfo/outdoor/receiver/MessageReceiver.java index ccf62d5..e3d1787 100644 --- a/app/src/main/java/com/navinfo/outdoor/receiver/MessageReceiver.java +++ b/app/src/main/java/com/navinfo/outdoor/receiver/MessageReceiver.java @@ -19,9 +19,16 @@ import androidx.core.content.ContextCompat; import com.bumptech.glide.Glide; import com.elvishew.xlog.XLog; +import com.github.lazylibrary.util.MD5; +import com.github.lazylibrary.util.PreferencesUtils; +import com.lzy.okgo.model.HttpParams; import com.navinfo.outdoor.R; import com.navinfo.outdoor.activity.HomeActivity; import com.navinfo.outdoor.api.Constant; +import com.navinfo.outdoor.bean.CommonRequestSend; +import com.navinfo.outdoor.bean.CommonResponse; +import com.navinfo.outdoor.http.Callback; +import com.navinfo.outdoor.http.HttpInterface; import com.tencent.android.tpush.NotificationAction; import com.tencent.android.tpush.XGPushBaseReceiver; import com.tencent.android.tpush.XGPushClickedResult; @@ -133,6 +140,7 @@ public class MessageReceiver extends XGPushBaseReceiver { intent.putExtra(Constant.NOTIFYCATION_INTENT_FROM, "normalNotification"); intent.putExtra(Constant.NOTIFYCATION_TITLE, contentTitle); intent.putExtra(Constant.NOTIFYCATION_CONTENT, contentText); + intent.putExtra(Constant.NOTIFYCATION_ID, id); PendingIntent pendingIntent = PendingIntent.getActivity(context, id, intent, PendingIntent.FLAG_CANCEL_CURRENT); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, mNormalChannelId) .setContentTitle(contentTitle) @@ -145,6 +153,35 @@ public class MessageReceiver extends XGPushBaseReceiver { .addAction(R.mipmap.ic_launcher, "去看看", pendingIntent) .setAutoCancel(true); mManager.notify(2, mBuilder.build()); + + uploadReceivePushMessage(context, id+"", 0); + } + + /** + * 上报获取到推送消息的时间给服务端 + * @param messageId 推送消息对应的id + * @param type 0-获取到消息,1-点击推送消息 + * */ + private void uploadReceivePushMessage(Context mContext, String messageId, int type) { + HttpParams httpParams = new HttpParams(); + httpParams.put("messageId", messageId); + httpParams.put("type", type); + CommonRequestSend commonRequestSend = new CommonRequestSend>(); + commonRequestSend.postMethodCommonSilence(mContext, PreferencesUtils.getString(mContext, "MESSAGE_PUSH_GET_OR_CLICK_UPLOAD")/*从SP文件中获取*/, + httpParams, Constant.DEFAULT_TIME_OUT, new Callback>() { + @Override + public void onSuccess(CommonResponse response, int id) { + if (response.getCode() == 200) { + // 推送消息获取时间上报成功 + XLog.d("上报推送接收成功:"+response.getMessage()+"-messageId:"+messageId); + } + } + + @Override + public void onError(Throwable e, int id) { + XLog.d("上报推送接收失败:"+e.getMessage()+"-messageId:"+messageId); + } + }, new CommonResponse().getClass()); } private void createNotificationForBigImage(Context context, String contentTitle, String contentText, Bitmap bigPic, @@ -160,6 +197,7 @@ public class MessageReceiver extends XGPushBaseReceiver { intent.putExtra(Constant.NOTIFYCATION_INTENT_FROM, "recommandTask"); intent.putExtra(Constant.NOTIFYCATION_TASK_GEOM, wkt); intent.putExtra(Constant.NOTIFYCATION_TASK_ZOOM, zoom); + intent.putExtra(Constant.NOTIFYCATION_ID, id); PendingIntent pendingIntent = PendingIntent.getActivity(context, id, intent, 0); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context, mBigImageChannelId) .setContentTitle(contentTitle) @@ -173,6 +211,7 @@ public class MessageReceiver extends XGPushBaseReceiver { .addAction(R.mipmap.ic_launcher, "去看看", pendingIntent); mManager.notify(1, mBuilder.build()); // 用户点击该提醒后跳转到主界面,并自动定位到指定位置 + uploadReceivePushMessage(context, id+"", 0); } /** diff --git a/app/src/main/java/com/navinfo/outdoor/util/FlushTokenUtil.java b/app/src/main/java/com/navinfo/outdoor/util/FlushTokenUtil.java index ed7db16..31f270c 100644 --- a/app/src/main/java/com/navinfo/outdoor/util/FlushTokenUtil.java +++ b/app/src/main/java/com/navinfo/outdoor/util/FlushTokenUtil.java @@ -3,9 +3,7 @@ package com.navinfo.outdoor.util; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; -import android.util.Log; import android.view.View; -import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; @@ -44,15 +42,24 @@ public class FlushTokenUtil { }); } - private static void initLogin(Activity activity) { + /** + * 后台安静重新登录 + * */ + public static void flushTokenSilence(Context mContext) { + initLogin(mContext); + } + + private static void initLogin(Context activity) { SharedPreferences navInfo = activity.getSharedPreferences(Constant.SHARED_PREFERENCES, Context.MODE_PRIVATE); navInfoEditor = navInfo.edit(); if (Constant.USHERED == null) { - ToastUtils.Message(activity,"token :更新失败"); + com.github.lazylibrary.util.ToastUtils.showToast(activity, "token :更新失败"); +// ToastUtils.Message(activity,"token :更新失败"); return; } else { if (HttpInterface.USER_LOGIN_OAUTH_TOKEN == null) { - ToastUtils.Message(activity,"token :更新失败"); + com.github.lazylibrary.util.ToastUtils.showToast(activity, "token :更新失败"); +// ToastUtils.Message(activity,"token :更新失败"); return; } } @@ -85,16 +92,19 @@ public class FlushTokenUtil { Constant.USHERED = body.getUserId(); navInfoEditor.apply(); if (HttpInterface.USER_DETAIL_BY_USER_ID == null) { - ToastUtils.Message(activity,"token :更新成功"); + com.github.lazylibrary.util.ToastUtils.showToast(activity, "token :更新成功"); +// ToastUtils.Message(activity,"token :更新成功"); } else { initGetUserInfo(activity);//获取用户信息 } }else { - ToastUtils.Message(activity,"获取用户id 失败"); +// ToastUtils.Message(activity,"获取用户id 失败"); + com.github.lazylibrary.util.ToastUtils.showToast(activity, "获取用户id 失败"); } } else { - ToastUtils.Message(activity,response.getMessage()); +// ToastUtils.Message(activity,response.getMessage()); + com.github.lazylibrary.util.ToastUtils.showToast(activity, response.getMessage()); } } @@ -108,9 +118,11 @@ public class FlushTokenUtil { String message = e.getMessage(); assert message != null; if (message.contains("timeout") || message.contains("Read time out")) { - ToastUtils.Message(activity,"请求超时"); +// ToastUtils.Message(activity,"请求超时"); + com.github.lazylibrary.util.ToastUtils.showToast(activity,"请求超时"); } else { - ToastUtils.Message(activity,message); +// ToastUtils.Message(activity,message); + com.github.lazylibrary.util.ToastUtils.showToast(activity,message); } } }); @@ -119,7 +131,7 @@ public class FlushTokenUtil { } } - private static void initGetUserInfo(Activity activity) { + private static void initGetUserInfo(Context activity) { OkGoBuilder okGoBuilder = OkGoBuilder .getInstance() .time(30) @@ -167,10 +179,12 @@ public class FlushTokenUtil { Constant.AUDITING = userAuth.getAuditmsg(); } navInfoEditor.commit(); - ToastUtils.Message(activity,"token :更新成功"); +// ToastUtils.Message(activity,"token :更新成功"); + com.github.lazylibrary.util.ToastUtils.showToast(activity,"token :更新成功"); } } else { - ToastUtils.Message(activity,response.getMessage()); +// ToastUtils.Message(activity,response.getMessage()); + com.github.lazylibrary.util.ToastUtils.showToast(activity,response.getMessage()); } } @@ -179,9 +193,11 @@ public class FlushTokenUtil { String message = e.getMessage(); assert message != null; if (message.equals("timeout") || message.equals("Read time out")) { - ToastUtils.Message(activity,"请求超时"); +// ToastUtils.Message(activity,"请求超时"); + com.github.lazylibrary.util.ToastUtils.showToast(activity,"请求超时"); } else { - ToastUtils.Message(activity,message); +// ToastUtils.Message(activity,message); + com.github.lazylibrary.util.ToastUtils.showToast(activity,message); } } });