¶Ô±ÈÐÂÎļþ |
| | |
| | | package cn.flightfeather.supervision.push |
| | | |
| | | import com.sun.corba.se.impl.protocol.giopmsgheaders.MessageBase.getRequestId |
| | | import com.aliyuncs.push.model.v20160801.PushResponse |
| | | import com.aliyuncs.utils.ParameterHelper |
| | | import com.aliyuncs.push.model.v20160801.PushRequest |
| | | import com.aliyuncs.DefaultAcsClient |
| | | import com.aliyuncs.profile.DefaultProfile |
| | | import com.aliyuncs.profile.IClientProfile |
| | | import java.util.* |
| | | |
| | | |
| | | /** |
| | | * ç§»å¨æ¨éæå¡ |
| | | * @author riku |
| | | * Date: 2019/12/26 |
| | | */ |
| | | class PushService { |
| | | |
| | | private val pushRequest: PushRequest |
| | | private val client: DefaultAcsClient |
| | | |
| | | companion object { |
| | | const val accessKeyId = "LTAI4FvmhG97saKL33tDqUV8" |
| | | const val accessKeySecret = "3PyluVDS97GTGVmm1p3s6vbLkyqZMf" |
| | | const val appKey = 28232249L |
| | | } |
| | | |
| | | init { |
| | | val profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret) |
| | | client = DefaultAcsClient(profile) |
| | | pushRequest = PushRequest() |
| | | pushRequest.appKey = appKey |
| | | pushRequest.pushType = "NOTICE" // æ¶æ¯ç±»å MESSAGE NOTICE |
| | | pushRequest.deviceType = "ANDROID" // 设å¤ç±»å ANDROID iOS ALL. |
| | | setAndroid() |
| | | // æ¨éæ§å¶ |
| | | // val pushDate = Date(System.currentTimeMillis()) // 30ç§ä¹é´çæ¶é´ç¹, ä¹å¯ä»¥è®¾ç½®æä½ æå®åºå®æ¶é´ |
| | | // val pushTime = ParameterHelper.getISO8601Time(pushDate) |
| | | // pushRequest.pushTime = pushTime // 延忍éãå¯éï¼å¦æä¸è®¾ç½®è¡¨ç¤ºç«å³æ¨é |
| | | val expireTime = ParameterHelper.getISO8601Time(Date(System.currentTimeMillis() + 12 * 3600 * 1000)) // 12å°æ¶åæ¶æ¯å¤±æ, ä¸ä¼ååé |
| | | pushRequest.expireTime = expireTime |
| | | pushRequest.storeOffline = true // ç¦»çº¿æ¶æ¯æ¯å¦ä¿å,è¥ä¿å, 卿¨éæ¶åï¼ç¨æ·å³ä½¿ä¸å¨çº¿ï¼ä¸ä¸æ¬¡ä¸çº¿å伿¶å° |
| | | } |
| | | |
| | | fun pushByAccount(accountList: List<String>, all: Boolean = false) { |
| | | // æ¨éç®æ |
| | | val accounts = StringBuilder() |
| | | accountList.forEach { |
| | | if (accounts.isNotEmpty()) { |
| | | accounts.append(",") |
| | | } |
| | | accounts.append(it) |
| | | } |
| | | if (all) { |
| | | pushRequest.target = "ALL" //æ¨éç®æ : DEVICE:æè®¾å¤æ¨é ALIAS : æå«åæ¨é ACCOUNT:æå¸å·æ¨é TAG:ææ ç¾æ¨é; ALL: å¹¿ææ¨é |
| | | pushRequest.targetValue = "ALL" //æ ¹æ®Targetæ¥è®¾å®ï¼å¦Target=DEVICE, å对åºçå¼ä¸º 设å¤id1,设å¤id2. å¤ä¸ªå¼ä½¿ç¨éå·åé.(å¸å·ä¸è®¾å¤æä¸æ¬¡æå¤100个çéå¶) |
| | | } else { |
| | | pushRequest.target = "ACCOUNT" //æ¨éç®æ : DEVICE:æè®¾å¤æ¨é ALIAS : æå«åæ¨é ACCOUNT:æå¸å·æ¨é TAG:ææ ç¾æ¨é; ALL: å¹¿ææ¨é |
| | | pushRequest.targetValue = accounts.toString() //æ ¹æ®Targetæ¥è®¾å®ï¼å¦Target=DEVICE, å对åºçå¼ä¸º 设å¤id1,设å¤id2. å¤ä¸ªå¼ä½¿ç¨éå·åé.(å¸å·ä¸è®¾å¤æä¸æ¬¡æå¤100个çéå¶) |
| | | } |
| | | // pushRequest.setTarget("ALL"); //æ¨éç®æ : DEVICE:æ¨éç»è®¾å¤; ACCOUNT:æ¨éç»æå®å¸å·,TAG:æ¨éç»èªå®ä¹æ ç¾; ALL: æ¨éç»å
¨é¨ |
| | | // pushRequest.setTargetValue("ALL"); //æ ¹æ®Targetæ¥è®¾å®ï¼å¦Target=DEVICE, å对åºçå¼ä¸º 设å¤id1,设å¤id2. å¤ä¸ªå¼ä½¿ç¨éå·åé.(å¸å·ä¸è®¾å¤æä¸æ¬¡æå¤100个çéå¶) |
| | | } |
| | | |
| | | fun push(title: String, body: String) { |
| | | // æ¨éé
ç½® |
| | | pushRequest.title = title // æ¶æ¯çæ é¢ |
| | | pushRequest.body = body // æ¶æ¯çå
容 |
| | | val pushResponse = client.getAcsResponse(pushRequest, true, 3) |
| | | System.out.printf("RequestId: %s, MessageID: %s\n", |
| | | pushResponse.requestId, pushResponse.messageId) |
| | | } |
| | | |
| | | private fun setIOS() { |
| | | // æ¨éé
ç½®: iOS |
| | | pushRequest.iosBadge = 5 // iOSåºç¨å¾æ å³ä¸è§è§æ |
| | | pushRequest.iosMusic = "default" // iOSéç¥å£°é³ |
| | | pushRequest.iosSubtitle = "iOS10 subtitle"//iOS10éç¥å¯æ é¢çå
容 |
| | | pushRequest.iosNotificationCategory = "iOS10 Notification Category"//æå®iOS10éç¥Category |
| | | pushRequest.iosMutableContent = true//æ¯å¦å
许æ©å±iOSéç¥å
容 |
| | | pushRequest.iosApnsEnv = "DEV"//iOSçéç¥æ¯éè¿APNsä¸å¿æ¥åéçï¼éè¦å¡«å对åºçç¯å¢ä¿¡æ¯ã"DEV" : 表示å¼åç¯å¢ "PRODUCT" : 表示ç产ç¯å¢ |
| | | pushRequest.iosRemind = true // æ¶æ¯æ¨éæ¶è®¾å¤ä¸å¨çº¿ï¼æ¢ä¸ç§»å¨æ¨éçæå¡ç«¯çé¿è¿æ¥ééä¸éï¼ï¼åè¿æ¡æ¨éä¼å为éç¥ï¼éè¿è¹æçAPNséééè¾¾ä¸æ¬¡ã注æï¼ç¦»çº¿æ¶æ¯è½¬éç¥ä»
éç¨äºç产ç¯å¢ |
| | | pushRequest.iosRemindBody = "iOSRemindBody"//iOSæ¶æ¯è½¬éç¥æ¶ä½¿ç¨çiOSéç¥å
容ï¼ä»
å½iOSApnsEnv=PRODUCT && iOSRemind为trueæ¶ææ |
| | | pushRequest.iosExtParameters = "{\"_ENV_\":\"DEV\",\"k2\":\"v2\"}" //éç¥çæ©å±å±æ§(注æ : è¯¥åæ°è¦ä»¥json mapçæ ¼å¼ä¼ å
¥,å¦åä¼è§£æåºé) |
| | | } |
| | | |
| | | private fun setAndroid() { |
| | | // æ¨éé
ç½®: Android |
| | | pushRequest.androidNotifyType = "BOTH"//éç¥çæéæ¹å¼ "VIBRATE" : éå¨ "SOUND" : å£°é³ "BOTH" : 声é³åéå¨ NONE : éé³ |
| | | pushRequest.androidNotificationChannel = "1" |
| | | // pushRequest.androidNotificationBarType = 1//éç¥æ èªå®ä¹æ ·å¼0-100 |
| | | // pushRequest.androidNotificationBarPriority = 1//éç¥æ èªå®ä¹æ ·å¼0-100 |
| | | pushRequest.androidOpenType = "APPLICATION" //ç¹å»éç¥åå¨ä½ "APPLICATION" : æå¼åºç¨ "ACTIVITY" : æå¼AndroidActivity "URL" : æå¼URL "NONE" : æ 跳转 |
| | | // pushRequest.androidOpenUrl = "http://www.aliyun.com" //Androidæ¶å°æ¨éåæå¼å¯¹åºçurl,ä»
å½AndroidOpenType="URL"ææ |
| | | // pushRequest.androidActivity = "com.alibaba.push2.demo.XiaoMiPushActivity" // 设å®éç¥æå¼çactivityï¼ä»
å½AndroidOpenType="Activity"ææ |
| | | pushRequest.androidMusic = "default" // Androidéç¥é³ä¹ |
| | | // pushRequest.androidPopupActivity = "com.ali.demo.PopupActivity"//è®¾ç½®è¯¥åæ°åå¯å¨è¾
å©å¼¹çªåè½, æ¤å¤æå®éç¥ç¹å»å跳转çActivityï¼è¾
å©å¼¹çªçåææ¡ä»¶ï¼1. éæç¬¬ä¸æ¹è¾
å©ééï¼2. StoreOfflineåæ°è®¾ä¸ºtrueï¼ |
| | | // pushRequest.androidPopupTitle = "Popup Title" |
| | | // pushRequest.androidPopupBody = "Popup Body" |
| | | // pushRequest.androidExtParameters = "{\"k1\":\"android\",\"k2\":\"v2\"}" //设å®éç¥çæ©å±å±æ§ã(注æ : è¯¥åæ°è¦ä»¥ json map çæ ¼å¼ä¼ å
¥,å¦åä¼è§£æåºé) |
| | | } |
| | | } |