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