From 027bf7da7a012fa36f8835b2419c74da8b2f1c28 Mon Sep 17 00:00:00 2001 From: feiyu02 <risaku@163.com> Date: 星期二, 15 十一月 2022 11:00:21 +0800 Subject: [PATCH] 2022.11.15 --- src/main/kotlin/cn/flightfeather/supervision/push/PushService.kt | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 103 insertions(+), 0 deletions(-) diff --git a/src/main/kotlin/cn/flightfeather/supervision/push/PushService.kt b/src/main/kotlin/cn/flightfeather/supervision/push/PushService.kt new file mode 100644 index 0000000..c9014b7 --- /dev/null +++ b/src/main/kotlin/cn/flightfeather/supervision/push/PushService.kt @@ -0,0 +1,103 @@ +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鏉ヨ瀹氾紝濡俆arget=DEVICE, 鍒欏搴旂殑鍊间负 璁惧id1,璁惧id2. 澶氫釜鍊间娇鐢ㄩ�楀彿鍒嗛殧.(甯愬彿涓庤澶囨湁涓�娆℃渶澶�100涓殑闄愬埗) + } else { + pushRequest.target = "ACCOUNT" //鎺ㄩ�佺洰鏍�: DEVICE:鎸夎澶囨帹閫� ALIAS : 鎸夊埆鍚嶆帹閫� ACCOUNT:鎸夊笎鍙锋帹閫� TAG:鎸夋爣绛炬帹閫�; ALL: 骞挎挱鎺ㄩ�� + pushRequest.targetValue = accounts.toString() //鏍规嵁Target鏉ヨ瀹氾紝濡俆arget=DEVICE, 鍒欏搴旂殑鍊间负 璁惧id1,璁惧id2. 澶氫釜鍊间娇鐢ㄩ�楀彿鍒嗛殧.(甯愬彿涓庤澶囨湁涓�娆℃渶澶�100涓殑闄愬埗) + } + // pushRequest.setTarget("ALL"); //鎺ㄩ�佺洰鏍�: DEVICE:鎺ㄩ�佺粰璁惧; ACCOUNT:鎺ㄩ�佺粰鎸囧畾甯愬彿,TAG:鎺ㄩ�佺粰鑷畾涔夋爣绛�; ALL: 鎺ㄩ�佺粰鍏ㄩ儴 +// pushRequest.setTargetValue("ALL"); //鏍规嵁Target鏉ヨ瀹氾紝濡俆arget=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 // 娑堟伅鎺ㄩ�佹椂璁惧涓嶅湪绾匡紙鏃笌绉诲姩鎺ㄩ�佺殑鏈嶅姟绔殑闀胯繛鎺ラ�氶亾涓嶉�氾級锛屽垯杩欐潯鎺ㄩ�佷細鍋氫负閫氱煡锛岄�氳繃鑻规灉鐨凙PNs閫氶亾閫佽揪涓�娆°�傛敞鎰忥細绂荤嚎娑堟伅杞�氱煡浠呴�傜敤浜庣敓浜х幆澧� + pushRequest.iosRemindBody = "iOSRemindBody"//iOS娑堟伅杞�氱煡鏃朵娇鐢ㄧ殑iOS閫氱煡鍐呭锛屼粎褰搃OSApnsEnv=PRODUCT && iOSRemind涓簍rue鏃舵湁鏁� + pushRequest.iosExtParameters = "{\"_ENV_\":\"DEV\",\"k2\":\"v2\"}" //閫氱煡鐨勬墿灞曞睘鎬�(娉ㄦ剰 : 璇ュ弬鏁拌浠son 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鏀跺埌鎺ㄩ�佸悗鎵撳紑瀵瑰簲鐨剈rl,浠呭綋AndroidOpenType="URL"鏈夋晥 +// pushRequest.androidActivity = "com.alibaba.push2.demo.XiaoMiPushActivity" // 璁惧畾閫氱煡鎵撳紑鐨刟ctivity锛屼粎褰揂ndroidOpenType="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 鐨勬牸寮忎紶鍏�,鍚﹀垯浼氳В鏋愬嚭閿�) + } +} \ No newline at end of file -- Gitblit v1.9.3