V1只能在纯公网环境下使用,V2没有限制
开发前必读-个推文档中心
<dependency><groupId&ui.push</groupId><artifactId>restful-sdk</artifactId><version>1.0.0.8</version>
</dependency>
------------------------------------------------------------------------------------
package ansport.push;ui.push.v2.sdk.ApiHelper;
ui.push.v2.sdk.GtApiConfiguration;
ui.push.v2.sdk.api.PushApi;
import lombok.Data;import org.springframework.beans.factory.annotation.Value;
import org.t.properties.ConfigurationProperties;
import t.annotation.Bean;
import org.springframework.stereotype.Component;/*** 个推应用信息*/@Data
@Component
public class GeTuiConfig {@Value("${uniPush.AppID}")private String appID;@Value("${uniPush.AppKey}")private String appKey;@Value("${uniPush.AppSecret}")private String appSecret; @Value("${uniPush.MasterSecret}")private String masterSecret;@Value("${uniPush.Host}")private String host;/*** 个推接口实例化* @return*/@Bean(name = "onlyPushApi")public PushApi pushApi() {GtApiConfiguration apiConfiguration = new GtApiConfiguration();//填写应用配置,参数在“Uni Push”下的“应用配置”页面中获取apiConfiguration.setAppId(appID);apiConfiguration.setAppKey(appKey);apiConfiguration.setMasterSecret(masterSecret);//实例化ApiHelper对象,用于创建接口对象ApiHelper apiHelper = ApiHelper.build(apiConfiguration);//创建对象,建议复用。目前有PushApi、StatisticApi、UserApiPushApi pushApi = atApi(PushApi.class);return pushApi;}}
-----------------------------------------------------------------------------------------
package ansport.push;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
ui.push.v2.sdk.api.PushApi;
ui.push.v2.sdkmon.ApiResult;
ui.push.v2.q.Audience;
ui.push.v2.q.AudienceDTO;
ui.push.v2.q.Settings;
ui.push.v2.q.message.PushChannel;
ui.push.v2.q.message.PushDTO;
ui.push.v2.q.message.PushMessage;
ui.push.v2.q.message.android.AndroidDTO;
ui.push.v2.q.message.android.GTNotification;
ui.push.v2.q.message.android.ThirdNotification;
ui.push.v2.q.message.android.Ups;
ui.push.v2.q.message.ios.Alert;
ui.push.v2.q.message.ios.Aps;
ui.push.v2.q.message.ios.IosDTO;
ui.push.v2.s.TaskIdDTO;
slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;import java.util.List;
import java.util.Map;/*** 个推工具类*/
@Slf4j
@Service
public class GeTuiUtils {@AutowiredPushApi pushApi;/*** 单cid推送** @param cid* @param title* @param content* @return*/public boolean pushToSingleByCid(String cid, String title, String content,String payload) {//推送消息体PushDTO<Audience> pushDTO = this.buildPushDTO(title, content,payload);//设置接收人信息Audience audience = new Audience();pushDTO.setAudience(audience);audience.addCid(cid);// cid//进行cid单推ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushToSingleByCid(pushDTO);if (apiResult.isSuccess()) {log.info("Push succeeded. cid:" + cid + ",msg:" + Msg() + ",data:" + Data());return true;} else {log.info("Push failed. cid:" + cid + ",code:" + Code() + ", msg: " + Msg());return false;}}/*** cid批量推送** @param cidList* @param title* @param content* @return*/public boolean pushListByCid(List<String> cidList, String title, String content, String payload) {//批量发送AudienceDTO audienceDTO = new AudienceDTO();PushDTO<Audience> pushDTO = this.buildPushDTO(title, content,payload);//创建消息ApiResult<TaskIdDTO> createApiResult = ateMsg(pushDTO);if (!createApiResult.isSuccess()) {log.info("批量推送:创建消息失败" + Msg());return false;}// 设置接收人信息Audience audience = new Audience();pushDTO.setAudience(audience);audience.setCid(cidList);audienceDTO.setAudience(audience);audienceDTO.Data().getTaskId());audienceDTO.setAsync(true);ApiResult<Map<String, Map<String, String>>> apiResult = pushApi.pushListByCid(audienceDTO);if (apiResult.isSuccess()) {System.out.println("Batch push succeeded. msg:" + Msg() + ",data:" + Data());return true;} else {System.out.println("Batch push failed. code:" + Code() + ", msg: " + Msg());return false;}}/*** 构建推送消息体** @param title* @param content* @return*/private PushDTO<Audience> buildPushDTO(String title, String content,String payload) {PushDTO<Audience> pushDTO = new PushDTO<>();// 设置推送参数pushDTO.setRequestId(System.currentTimeMillis() + "");pushDTO.setGroupName("test-group");//配置推送条件Settings settings = new Settings();pushDTO.setSettings(settings);//消息有效期,走厂商消息需要设置该值settings.setTtl(3600000);//安卓在线通道走个推推送时的消息体(在线通道不支持ios)PushMessage pushMessage = new PushMessage();pushDTO.setPushMessage(pushMessage);//通知消息JSONObject trans = new JSONObject();trans.put("title", title);trans.put("content", content);trans.put("payload", payload);pushMessage.JSONString(trans));//设置离线推送时的消息体PushChannel pushChannel = new PushChannel();//安卓离线厂商通道推送的消息体AndroidDTO androidDTO = new AndroidDTO();Ups ups = new Ups();//通知消息ThirdNotification thirdNotification = new ThirdNotification();ups.setNotification(thirdNotification);thirdNotification.setTitle(title);thirdNotification.setBody(content);thirdNotification.setClickType("intent");thirdNotification.setIntent("intent://ui.push/detail?#Intent;scheme=gtpushscheme;launchFlags=0x4000000;packageui.demo;componentui.ui.demo.DemoActivity;S.payload=payloadStr;end");androidDTO.setUps(ups);pushChannel.setAndroid(androidDTO);//ios离线apn通道推送的消息体Alert alert = new Alert();alert.setTitle(title);alert.setBody(content);Aps aps = new Aps();aps.setContentAvailable(0);//0表示普通通知消息(默认为0);1表示静默推送(无通知栏消息),静默推送时不需要填写其他参数。苹果建议1小时最多推送3条静默消息aps.setSound("default");//自定义铃声:系统铃声设置为:default; 无声设置为in.ios.silence,或不填aps.setAlert(alert);IosDTO iosDTO = new IosDTO();iosDTO.setAps(aps);iosDTO.setType("notify");iosDTO.setPayload(payload);pushChannel.setIos(iosDTO);pushDTO.setPushChannel(pushChannel);return pushDTO;}
}
App.vue
-----------------------------------------------------------------------------------------
<script>import permision from "@/common/permission.js"import { action } from '@/utils/request.js';export default {onLaunch: function() {console.log('App Launch')const that = this;plus.push.setAutoNotification(true);uni.startLocationUpdate({"type":"wgs84",success: res => { },fail(res) { console.log(`startLocationUpdate fail: ${JSON.stringify(res)}`);}});LocationChange(function(res2) {if (StorageSync('userInfo')) {var currentTime = new Date().getTime();//获取上次执行的时间var oldTime = StorageSync('oldTime');//判断当前的位置是否和上次位置不一致,并且间隔时间超过5sif(currentTime - oldTime>5000){//缓存当前执行的时间uni.setStorageSync('oldTime',currentTime);//将位置信息上传后台的自己的代码let userinfo = JSON.StorageSync('userInfo'));var info = ClientInfo();var clientId = info.clientid;action('post', '/hardware/acceptJSON', {fun: 'location',realname: alname,username: userinfo.username,lng: res2.longitude,lat: res2.latitude,clientId: clientId}, false)}}});plus.push.addEventListener("click", function(msg) {if(permision.isIOS) {console.log("ios:click收到"+JSON.parse(JSON.stringify(msg)).payload);var obj = JSON.parse(JSON.stringify(msg)).PushMessagePage(obj.data ? obj.data:obj);} else {console.log("安卓:click收到"+JSON.parse(JSON.stringify(msg)));var obj = JSON.parse(JSON.stringify(msg)).PushMessagePage(obj.data ? obj.data:obj);} }); plus.push.addEventListener('receive',(message)=>{ console.log("receive收到")//收到透传消息,执行该事件let payload = message.payload;//自定义内容获取let text = ;if(permision.isIOS) {console.log("ios:receive收到")let payload = message.payload;//自定义内容获取let text = ateLocalMessage(text,payload);} else {console.log("安卓收到")PushMessagePage(payload);}})},onShow: function() { },methods: {createLocalMessage(content,data) {console.log("ios开始创建本地消息了")ateMessage(content,{"data": data});},toPushMessagePage(payload) {if(typeof payload == 'object') {payload = JSON.stringify(payload)}uni.setStorageSync("obj", payload);uni.navigateTo({url: `../pointposition/push`})},},onHide: function() {console.log('App Hide')}}
</script><style>/*每个页面公共css */@import './common/uni.css';page {width: 100%;height: 100%;background-color: #F5F6FA;}.content {background-color: #F5F6FA;}
</style>
本文发布于:2024-01-30 01:33:47,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170654963118295.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |