Procházet zdrojové kódy

消息推送对接完成

bjb před 2 týdny
rodič
revize
094e821272

+ 15 - 0
app/src/main/AndroidManifest.xml

@@ -5,6 +5,7 @@
     <uses-permission android:name="android.permission.INTERNET" />
 
     <application
+        android:name=".Entry"
         android:allowBackup="true"
         android:dataExtractionRules="@xml/data_extraction_rules"
         android:fullBackupContent="@xml/backup_rules"
@@ -31,6 +32,20 @@
             android:exported="true"
             android:launchMode="singleTask"
             android:theme="@style/Theme.Bozzys" />
+        <!--  阿里消息推送服务配置  -->
+        <service
+            android:name=".service.AliPushService"
+            android:exported="false">
+            <intent-filter>
+                <action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" />
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.alibaba.sdk.android.push.RECEIVE" />
+            </intent-filter>
+        </service>
     </application>
 
 </manifest>

+ 2 - 2
app/src/main/java/com/iscs/bozzys/Entry.kt

@@ -21,8 +21,8 @@ class Entry : Application() {
     private fun initPush() {
         val config = PushInitConfig.Builder()
             .application(this)
-            .appKey("335634709")
-            .appSecret("5b88d533afe84513881a9c2f8502265f")
+            .appKey("335635068")
+            .appSecret("a641c237c69e4fcfbff6ca4d3638758d")
             .build()
         PushServiceFactory.init(config)
     }

+ 41 - 0
app/src/main/java/com/iscs/bozzys/service/AliPushService.kt

@@ -0,0 +1,41 @@
+package com.iscs.bozzys.service
+
+import android.content.Context
+import android.util.Log
+import com.alibaba.sdk.android.push.AliyunMessageIntentService
+import com.alibaba.sdk.android.push.notification.CPushMessage
+
+class AliPushService : AliyunMessageIntentService() {
+
+    override fun onNotification(p0: Context?, p1: String?, p2: String?, p3: Map<String?, String?>?) {
+        Log.d("xiaoming","push onNotification")
+    }
+
+    override fun onMessage(p0: Context?, p1: CPushMessage?) {
+        Log.d("xiaoming","push onMessage")
+    }
+
+    override fun onNotificationOpened(p0: Context?, p1: String?, p2: String?, p3: String?) {
+        Log.d("xiaoming","push onNotificationOpened")
+    }
+
+    override fun onNotificationClickedWithNoAction(p0: Context?, p1: String?, p2: String?, p3: String?) {
+        Log.d("xiaoming","push onNotificationClickedWithNoAction")
+    }
+
+    override fun onNotificationRemoved(p0: Context?, p1: String?) {
+        Log.d("xiaoming","push onNotificationRemoved")
+    }
+
+    override fun onNotificationReceivedInApp(
+        p0: Context?,
+        p1: String?,
+        p2: String?,
+        p3: Map<String?, String?>?,
+        p4: Int,
+        p5: String?,
+        p6: String?
+    ) {
+        Log.d("xiaoming","push onNotificationReceivedInApp")
+    }
+}

+ 14 - 6
app/src/main/java/com/iscs/bozzys/ui/pages/PageSplash.kt

@@ -7,8 +7,11 @@ import android.util.Log
 import androidx.compose.foundation.layout.PaddingValues
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
+import com.alibaba.sdk.android.push.CloudPushService
 import com.alibaba.sdk.android.push.CommonCallback
 import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory
+import com.iscs.bozzys.R
+import com.iscs.bozzys.service.AliPushService
 import com.iscs.bozzys.ui.base.PageBase
 import com.iscs.bozzys.ui.pages.home.openPageHome
 import kotlinx.coroutines.delay
@@ -49,12 +52,18 @@ class PageSplash : PageBase() {
      * 消息推送初始化操作
      */
     private fun initPush() {
+        val pushService = PushServiceFactory.getCloudPushService()
+        // 设置输出调试日志
+        pushService.setLogLevel(CloudPushService.LOG_DEBUG)
+        // 设置消息服务
+        pushService.setPushIntentService(AliPushService::class.java)
         // 初始化消息推送
-        PushServiceFactory.getCloudPushService().register(this, object : CommonCallback {
+        pushService.register(this, object : CommonCallback {
 
             override fun onSuccess(msg: String?) {
                 // 消息推送初始化成功
-                Log.d("xiaoming", "Push init successful $msg")
+                Log.d("xiaoming", "Push init success, deviceId is ${PushServiceFactory.getCloudPushService().deviceId}")
+                // 这里可能要告知服务端当前推送的设备id,便于后续设备推送通知
             }
 
             override fun onFailed(errCode: String?, errMsg: String?) {
@@ -63,16 +72,15 @@ class PageSplash : PageBase() {
             }
 
         })
+
         // 建立通知通道
         val nm = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
         // 通知渠道的id。这个id值需要给后端开发和运维人员,推送的时候对应 AndroidNotificationChannel 参数。
         val channelId = "normal"
-        // 用户可以看到的通知渠道的名字。
-        val name: CharSequence = "我的测试通道"
         // 用户可以看到的通知渠道的描述。
-        val description = "我的测试通道"
+        val description = getString(R.string.push_channel_normal)
         val importance = NotificationManager.IMPORTANCE_HIGH
-        val channel = NotificationChannel(channelId, name, importance)
+        val channel = NotificationChannel(channelId, description, importance)
 
         // 配置通知渠道的属性。
         channel.description = description

+ 1 - 0
app/src/main/res/values-zh-rCN/strings.xml

@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <string name="app_name">博士安全</string>
+    <string name="push_channel_normal">常规</string>
 </resources>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -1,3 +1,4 @@
 <resources>
     <string name="app_name">Bozzys</string>
+    <string name="push_channel_normal">Normal</string>
 </resources>