flutter 极光推送 华为 厂商通道

 有没有大佬有更好的接收厂商通道消息的方法


前言

没事干了,集成一下极光推送,Demo在总结上面


目录

集成华为厂商通道

厂商通道接收消息

总结


环境

         

 flutter 极光推送 华为 厂商通道_第1张图片


pubspec.yaml中引入

dependencies:
  flutter:
    sdk: flutter
//--------------------在这个下面添加-------------    
  #极光推送
  jpush_flutter: ^2.2.3


android\app\build.gradle中添加

defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "com.dyys.jpush_demo"
    minSdkVersion 21
    targetSdkVersion 30
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
    //===============添加====================
    ndk {
        //选择要添加的对应 cpu 类型的 .so 库。
        abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a'
    }
    manifestPlaceholders = [
            JPUSH_PKGNAME : applicationId,
            JPUSH_APPKEY : "0740381176916492db0971fc", // NOTE: JPush 上注册的包名对应的 Appkey.
            JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
    ]
    //========================================
}


 复制官方实例代码,然后运行

https://pub.flutter-io.cn/packages/jpush_flutter/example


集成华为厂商通道


 参考了

在Flutter中使用极光推送集成华为通道踩坑 - aquilahkj - 博客园

flutter 极光推送华为厂商通道推送_After life的博客-CSDN博客_flutter 厂商推送


android\build.gradle中添加

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        mavenCentral()
        //===========添加=================
        maven { url 'https://developer.huawei.com/repo/' }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        //===========添加=================
        classpath 'com.huawei.agconnect:agcp:1.5.2.300'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        //===========添加=================
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

android\app\build.gradle 添加

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    //=====================添加============================
    // // 接入华为厂商
    implementation 'com.huawei.hms:push:5.3.0.301'
    implementation 'cn.jiguang.sdk.plugin:huawei:4.6.0'// 极光厂商插件版本与接入 JPush 版本保持一致,下同
}


cn.jiguang.sdk.plugin:huawei:4.6.0的版本和

 flutter 极光推送 华为 厂商通道_第2张图片

的版本一样


  • 进入华为开发者联盟-智能终端能力开放,共建开发者生态点右上角管理中心

根据极光文档极光文档

配置华为账号

flutter 极光推送 华为 厂商通道_第3张图片

 flutter 极光推送 华为 厂商通道_第4张图片

  • 设置完毕后debug启动看控制台是否输出

[HWPushHelper] token:xxxxxxxxxxxxxx


厂商通道接收消息


参考大佬Android极光推送厂商离线通道集成文档及flutter集成总结_闫文敬的博客-CSDN博客_极光推送离线推送

监听不到,暂时本地再推送一遍

修改MainActivity.kt
package com.example.jpush_demo

import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import cn.jpush.android.api.JPushInterface
import cn.jpush.android.data.JPushLocalNotification
import io.flutter.embedding.android.FlutterActivity
import org.json.JSONException
import org.json.JSONObject
import java.util.*

class MainActivity: FlutterActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        handleOpenClick()
    }

    private val TAG = "| JPUSH | Flutter | Android | ChangShang |"
    /**
     * 消息Id
     */
    private val KEY_MSGID = "msg_id"

    /**
     * 该通知的下发通道
     */
    private val KEY_WHICH_PUSH_SDK = "rom_type"

    /**
     * 通知标题
     */
    private val KEY_TITLE = "n_title"

    /**
     * 通知内容
     */
    private val KEY_CONTENT = "n_content"

    /**
     * 通知附加字段
     */
    private val KEY_EXTRAS = "n_extras"


    /**
     * 处理点击事件,当前启动配置的Activity都是使用
     * Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK
     * 方式启动,只需要在onCreat中调用此方法进行处理
     */
    private fun handleOpenClick() {
        var data: String? = null
        //获取华为平台附带的jpush信息
        if (getIntent().getData() != null) {
            data = getIntent().getData().toString()
        }

        //获取fcm、oppo、vivo、华硕、小米平台附带的jpush信息
        if (TextUtils.isEmpty(data) && getIntent().getExtras() != null) {
            data = getIntent().getExtras()?.getString("JMessageExtra")
        }
        if (TextUtils.isEmpty(data)) return
        try {
            val jsonObject = JSONObject(data)
            val msgId: Long = jsonObject.optLong(KEY_MSGID)
            val title: String = jsonObject.optString(KEY_TITLE)
            val message: String = jsonObject.optString(KEY_CONTENT)
            val extras: String = jsonObject.optString(KEY_EXTRAS)

            val ln = JPushLocalNotification()
            ln.title = title
            ln.builderId =1
            ln.content = message
            ln.extras = extras
            ln.broadcastTime =  Date().time
            ln.notificationId = msgId

            JPushInterface.addLocalNotification(this,ln)

        } catch (e: JSONException) {
            System.out.println("======JPUSH厂商通道错误====")
            System.out.println(e)
            System.out.println("==========================")
        }
    }

}

附笔记:

文档:Flutter集成极光推送.note
链接:

http://note.youdao.com/noteshare?id=3ae4f9de39a8c42d6f532ef6f261b2c2&sub=E1FFB7D43DF84969B2729D9C652011C0

Demo地址

https://pan.baidu.com/s/1k0RHReTfJfYdrDP-6oBxDA

提取码:1234
 


总结

记录一下集成要点

你可能感兴趣的:(android,studio,flutter,移动开发,app)