flutter集成Mob推送(Android)

news2024/11/25 0:41:41

Mob推送
Flutter对接文档
1、在pubspec.yaml文件中加入下面依赖

mobpush_plugin: ^1.2.2 # MOB推送

2、导入 MobPush 相关依赖
在项目根目录的build.gradle中添加以下代码:

buildscript {
    repositories {
        // 配置Mob Maven库
        maven {
           url "https://mvn.mob.com/android"
        }
      // 配置HMS Core SDK的Maven仓地址。(集成华为厂商需要添加)
        maven {
           url 'https://developer.huawei.com/repo/'}
        }
        ...
    }
    dependencies {
        ...
        // 集成MobPush
        classpath 'com.mob.sdk:MobSDK:+'
    }
}

3、在 /android/app/build.gradle 中添加以下代码:

apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
// 导入MobSDK
apply plugin: 'com.mob.sdk'

4、平台相关集成 在项目的/android/app/build.gradle中添加:

MobSDK {
    appKey "您的MobTech平台appKey"
    appSecret "您的MobTech平台appSecret"

    //配置MobPush
    MobPush {
        //配置厂商推送(可选配置,不需要厂商推送可不配置,需要哪些厂商推送只需配置哪些厂商配置即可)
        devInfo {
            //配置小米厂商推送
            XIAOMI {
                appId "您的小米平台appId"
                appKey "您的小米平台appKey"
            }

            //配置华为厂商推送
            HUAWEI {
                appId "您的华为平台appId"
            }

            //配置魅族厂商推送
            MEIZU {
                appId "您的魅族平台appId"
                appKey "您的魅族平台appKey"
            }

            //配置FCM厂商推送
            FCM {
                //设置默认推送通知显示图标
                iconRes "@mipmap/default_ic_launcher"
            }

            //配置OPPO厂商推送
            OPPO {
                appKey "您的OPPO平台appKey"
                appSecret "您的OPPO平台appSecret"
            }

            //配置VIVO厂商推送
            VIVO {
                appId "您的VIVO平台appId"
                appKey "您的VIVO平台appKey"
            }
        }
    }
}

5、在MainActivity的onCreate中添加以下代码:

package com.crlgc.canteenapp;

import android.os.Bundle;

import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.android.FlutterFragmentActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.plugins.GeneratedPluginRegistrant;

public class MainActivity extends FlutterFragmentActivity {
    
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        GeneratedPluginRegistrant.registerWith(new FlutterEngine(this));
    }

    
    public void configureFlutterEngine(FlutterEngine flutterEngine) {
        super.configureFlutterEngine(flutterEngine);
    }
}

SDK API
6、回传用户隐私授权结果 (submitPrivacyGrantResult)

/**
 * 回传用户隐私授权结果
 * @param status     用户是否同意隐私协议
 * @param result     默认传null
 */  
Mobcommonlib.submitPolicyGrantResult(bool status, Function(bool)? result)

7、设置别名(setAlias)

MobpushPlugin.setAlias("别名").then((Map<String, dynamic> aliasMap){
    String res = aliasMap['res'];
    String error = aliasMap['error'];
    String errorCode = aliasMap['errorCode'];
    print(">>>>>>>>>>>>>>>>>>>>>>>>>>> setAlias -> res: $res error: $error");
});

8、添加推送回调监听(addPushReceiver 接收自定义透传消息回调、接收通知消息回调、接收点击通知消息回调、接收别名或标签操作回调)

MobpushPlugin.addPushReceiver(_onEvent, _onError);

void _onEvent(Object event) {

}

void _onError(Object event) {

}
  • 有问题在gradle.properties添加
    MobSDK.spEdition=FP

涉及文件如下:登录文件设置了别名,main获取推送消息及设置后续操作。
在这里插入图片描述
*** 问题排查:
1、如果遇到 missPlugin等问题,重新构建,重启环境或重启电脑。
2、获取不到registrationId,看看时候申请了权限;

 <!--允许程序读写手机状态和身份-->
 <uses-permission android:name="android.permission.READ_PHONE_STATE" />

3、创建了推送收不到:
在这里插入图片描述

(1)看手机是否开启了通知权限;
(2)在后台排查一下设备是否在线
在这里插入图片描述
(3)推送设置,包名是不是自己的包名,默认是com.null_as_default
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/472237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4月份读书学习好文记录

4月份学习记录 找到自己感兴趣的方向&#xff0c;而不是人云亦云&#xff0c;知道自己想要的是什么&#xff0c;而不是一直得过且过&#xff01; 差距是怎么出现的&#xff0c;四年来的点点滴滴&#xff01;&#xff01;&#xff01; 一个前端大佬的十年回顾 | 漫画前端的前世…

Confidential Containers发布0.5.0版本,龙蜥将基于八大特性构建开箱即用的机密容器解决方案

文/段勇帅 01 前言 机密容器&#xff08;Confidential Containers&#xff0c;简称CoCo&#xff09;是 Cloud Native Computing Foundation&#xff08;CNCF&#xff09;Sandbox 项目。目前机密容器项目的核心参与者包括阿里云、AMD、ARM、IBM、Intel、Microsoft、Red Hat、R…

OpenGL(三)——着色器

目录 一、前言 二、Shader 2 Shader 2.1 顶点着色器 2.2 片段着色器 三、APP 2 Shader 四、顶点颜色属性 五、着色器类C 一、前言 着色器Shader是运行在GPU上的小程序&#xff0c;为图形渲染管线的某个特定部分而运行。各阶段着色器之间无法通信&#xff0c;只有输入和输…

uniapp 截图或者生成海报

需求&#xff1a;uniapp移动端需要生成一张当前界面的海报 方案一&#xff1a;类似于手机按钮截图效果。实现代码如下&#xff1a; doSaveScreen() { let $this this; uni.showLoading({ //加载框 title: 保存中..., …

Sqlmap手册—史上最全

Sqlmap手册—史上最全 一.介绍 开源的SQL注入漏洞检测的工具&#xff0c;能够检测动态页面中的get/post参数&#xff0c;cookie&#xff0c;http头&#xff0c;还能够查看数据&#xff0c;文件系统访问&#xff0c;甚至能够操作系统命令执行。 检测方式&#xff1a;布尔盲注、…

css中的background属性

文章目录 一&#xff1a;background-repeat二&#xff1a;background-position三&#xff1a;background缩写方式三&#xff1a;background-size四&#xff1a;background-origin五&#xff1a;background-clip 在日常前端开发中&#xff0c;经常需要进行背景或背景图的处理。但…

国民技术N32G430开发笔记(10)- IAP升级 Application 的制作

IAP升级 Application 的制作 1、App程序跟Bootloader程序最大的区别就是&#xff0c; 程序的执行地址变成了之前flash设定的0x08006000处&#xff0c; 大小限制为20KB 所以修改Application工程的ld文件 origin 改成 0x08006000 length 改成0x5000 烧录是起始地址也要改为x0x…

【chapter30】【PyTorch】[动量与学习率衰减】

前言&#xff1a; SGD的不足&#xff1a; ①呈“之”字型&#xff0c;迂回前进&#xff0c;损失函数值在一些维度的改变得快&#xff08;更新速度快&#xff09;&#xff0c;在一些维度改变得慢&#xff08;速度慢&#xff09;- 在高维空间更加普遍 ②容易陷入局部极小值和鞍点…

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat

JDK本身提供了很多方便的JVM性能调优监控工具&#xff0c;除了集成式的VisualVM和jConsole外&#xff0c;还有jps、jstack、jmap、jhat、jstat等小巧的工具&#xff0c;本博客希望能起抛砖引玉之用&#xff0c;让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开…

【数据架构系列-06】一文搞懂数据模型的3中类型——概念模型、逻辑模型、物理模型

数据模型就是模拟现实世界的方法论&#xff0c;是通向智慧世界的基石&#xff01; 从现实世界发展到智慧世界&#xff0c;要数经历现实世界、信息世界、计算机世界、数据世界、智慧世界五个不同的世界&#xff0c;我们天生具有从混沌的世界抽象信息变为信息世界的能力&#xff…

《统计学习方法》——EM算法及其推广(上)

引言 EM算法是一种迭代算法&#xff0c;用于含有隐变量的概率模型参数的极大似然估计。 理解EM算法需要很多概率论的知识&#xff0c;所以下面先贴出所需要的知识。便于对后文的理解。 补充知识 期望 对于离散型随机变量 X X X的概率分布为 p i p { X x i } p_ip\{Xx_i\}…

第八章 集合函数

文章目录 前言一、聚合函数介绍1 、AVG (平均值) 和SUM &#xff08;求和&#xff09;函数2 、MIN&#xff08;最小值&#xff09;和MAX&#xff08;最大值&#xff09;函数3 、COUNT函数问题&#xff1a;用count(*)&#xff0c;count(1)&#xff0c;count(列名)谁好呢? 二、G…

语义分割学习笔记(一)语义分割前言

1.什么是语义分割&#xff1f; 语义分割(semantic segmentation) FCN要对分割对象进行一个大的划分&#xff0c;即分类。如下图&#xff0c;语义分割有树、人、草地大类别的划分。 实例分割(Instance segmentation) Mask R-CNN要对每一个分割类别中的每一个对象也要进行一个细…

第五章——动态规划2

线性DP 数字三角形 像二维数组一样&#xff0c;设置行和列&#xff0c;只不过这里的列是斜着的&#xff0c;如圈出来的7&#xff0c;坐标可以表示为(4,2) 集合划分&#xff0c;所有路径可以分成俩类&#xff0c;某点左上方一类&#xff0c;右下方一类。 我们先把7去掉&#xff…

利用层级式一致性加强进行半监督病理图像分割

文章目录 Semi-supervised Histological Image Segmentation via Hierarchical Consistency Enforcement摘要方法对学生模型进行有监督学习层级式一致性强化模块Hierarchical Consistency Loss (HC-Loss)以自我为导向的分层一致性损失 实验结果 Semi-supervised Histological I…

MySQL基础概念和SQL

目录 1.概念 1.1.什么是MySQL 1.2.关系型数据库、非关系型数据库 1.3.库、表、字段 2.数据类型 2.1.数值 2.2.字符串 2.3.日期/时间 3.结构化查询语言 3.1.DDL 3.2.DML 3.3.DCL 3.4.DQL 3.4.1.结果集 3.4.2.取别名 3.4.3.查列 3.4.4.条件查询 3.4.5.模糊查询…

做BI财务数据分析,国产BI软件经验更足

不管是为了提高销售额&#xff0c;还是为了提高库存周转、疏通现金流&#xff0c;都离不开数据分析&#xff0c;特别是BI大数据分析可视化。因此这几年来BI软件在各行各业的接受度迅速提升&#xff0c;特别是在财务数据分析方面&#xff0c;国产BI软件更是经验、技术到位。要说…

【大数据之Hadoop】二十二、Yarn调度器和调度算法

Hadoop作业调度器主要有三种&#xff1a;FIFO、容量&#xff08;Capacity Scheduler&#xff09;和公平&#xff08;Fair Scheduler&#xff09;。 Apache Hadoop默认的资源调度器&#xff1a;容量调度器Capacity Scheduler。 CDH框架默认调度器是Fair Scheduler。 1 FIFO 单…

智能电动自行车充电远程管理系统

目前市场上现有的户外普通充电桩只是一个用电计量工具&#xff0c;无法形成一个有效的停放充电管理环境。在受到雨、雪、风、暴晒等天气影响下根本无法使用,并且存在极大的安全隐患。同时公共无限的停放也导致充电位置被闲置车辆及杂物堆放占用&#xff0c;经常出现真正需要充电…

前端面试题 —— CSS (二)

目录 一、transition 和 animation 的区别 二、什么是物理像素&#xff0c;逻辑像素和像素密度&#xff0c;为什么在移动端开发时需要用到3x, 2x 这种图片&#xff1f; 三、margin 和 padding 的使用场景 四、CSS 优化和提高性能的方法有哪些&#xff1f; 五、display:in…