集成准备

这是一个基于 MobPush 功能的扩展的 Flutter 插件。使用此插件能够帮助您在使用 Flutter 开发应用时,快速地实现推送功能。

在pubspec.yaml文件中加入下面依赖

dependencies:mobcommonlib:mobpush_plugin:

然后执行:flutter packages get 导入package 在你的dart工程文件中,导入下面头文件,开始使用

import 'package:mobcommonlib/mobcommonlib.dart';
import 'package:mobpush_plugin/mobpush_plugin.dart';

iOS

平台配置参考 iOS集成文档

实现文档中 Xcode配置:配置AppKey和AppSecret

Android

导入 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 {...// 集成MobPushclasspath "com.mob.sdk:MobSDK:2018.0319.1724"}
}

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

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

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

MobSDK {appKey "您的MobTech平台appKey"appSecret "您的MobTech平台appSecret"//配置MobPushMobPush {//配置厂商推送(可选配置,不需要厂商推送可不配置,需要哪些厂商推送只需配置哪些厂商配置即可)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"}}}
}

添加代码

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

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);GeneratedPluginRegistrant.registerWith(this);}

SDK API

回传用户隐私授权结果 (submitPrivacyGrantResult)

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

例:

Mobcommonlib.submitPolicyGrantResult(true, null);

设置远程推送环境,向用户授权(setCustomNotification仅 iOS)

setCustomNotificationif (Platform.isIOS) {MobpushPlugin.setCustomNotification();
}

设置远程推送环境 (setAPNsForProduction仅 iOS)

setAPNsForProductionif (Platform.isIOS) {// 开发环境 false, 线上环境 trueMobpushPlugin.setAPNsForProduction(false)
}

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

addPushReceiverMobpushPlugin.addPushReceiver(_onEvent, _onError);void _onEvent(Object event) {}void _onError(Object event) {}

停止推送(stopPush)

stopPushMobpushPlugin.stopPush();

重新打开推送服务(restartPush)

restartPushMobpushPlugin.restartPush();

是否已停止接收推送(isPushStopped)

isPushStoppedMobpushPlugin.isPushStopped();

设置别名(setAlias)

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

获取别名(getAlias)

getAliasMobpushPlugin.getAlias().then((Map<String, dynamic> aliasMap){String res = aliasMap['res'];String error = aliasMap['error'];print(">>>>>>>>>>>>>>>>>>>>>>>>>>> getAlias -> res: $res error: $error");
});

删除别名(deleteAlias)

deleteAliasMobpushPlugin.deleteAlias().then((Map<String, dynamic> aliasMap){String res = aliasMap['res'];String error = aliasMap['error'];print(">>>>>>>>>>>>>>>>>>>>>>>>>>> deleteAlias -> res: $res error: $error");
});

添加标签(addTags)

addTagsList tags = new List();
tags.add("tag1");
tags.add("tag2");
MobpushPlugin.addTags(tags).then((Map<String, dynamic> tagsMap){String res = tagsMap['res'];String error = tagsMap['error'];print(">>>>>>>>>>>>>>>>>>>>>>>>>>> addTags -> res: $res error: $error");
});

获取标签(getTags)

getTagsMobpushPlugin.getTags().then((Map<String, dynamic> tagsMap) {List<String> resList;if (tagsMap['res'] == null) {resList = [];} else {resList = tagsMap['res'].toList();}String error = tagsMap['error'];print(">>>>>>>>>>>>>>>>>>>>>>>>>>> getTags -> res: $resList error: $error");});

删除标签(deleteTags)

deleteTagsList tags = new List();
tags.add("tag1");
tags.add("tag2");
MobpushPlugin.deleteTags(tags).then((Map<String, dynamic> tagsMap){String res = tagsMap['res'];String error = tagsMap['error'];print(">>>>>>>>>>>>>>>>>>>>>>>>>>> deleteTags -> res: $res error: $error");
});

清空标签(cleanTags)

cleanTagsMobpushPlugin.cleanTags().then((Map<String, dynamic> tagsMap){String res = tagsMap['res'];String error = tagsMap['error'];print(">>>>>>>>>>>>>>>>>>>>>>>>>>> cleanTags -> res: $res error: $error");
});

发送本地通知(addLocalNotification)

addLocalNotificationMobpushPlugin.addLocalNotification();

绑定手机号(bindPhoneNum)

bindPhoneNumMobpushPlugin.bindPhoneNum("110");

测试模拟推送,用于测试(send)

send/*** 测试模拟推送,用于测试* type:模拟消息类型,1、通知测试;2、内推测试;3、定时* content:模拟发送内容,500字节以内,UTF-8* space:仅对定时消息有效,单位分钟,默认1分钟* extras: 附加数据,json字符串*/
MobpushPlugin.send(int type, String content, int space, String extras).then((Map<String, dynamic> sendMap){String res = sendMap['res'];String error = sendMap['error'];print(">>>>>>>>>>>>>>>>>>>>>>>>>>> send -> res: $res error: $error");
});

设置点击通知是否跳转默认页 (setClickNotificationToLaunchMainActivity 仅Android)

setClickNotificationToLaunchMainActivityMobpushPlugin.setClickNotificationToLaunchMainActivity (bool enable);

移除本地通知(removeLocalNotification 仅Android)

removeLocalNotificationMobpushPlugin.removeLocalNotification(int notificationId);

清空本地通知(clearLocalNotifications 仅)

clearLocalNotificationsMobpushPlugin.clearLocalNotifications();

设置通知栏icon,不设置默认取应用icon(setNotifyIcon 仅Android)

setNotifyIconMobpushPlugin.setNotifyIcon(String resId);

设置通知静音时段(推送选项)(setSilenceTime 仅Android)

setSilenceTime/*** 设置通知静音时段(推送选项)(仅Android)* @param startHour   开始时间[0~23] (小时)* @param startMinute 开始时间[0~59](分钟)* @param endHour     结束时间[0~23](小时)* @param endMinute   结束时间[0~59](分钟)*/
MobpushPlugin.setSilenceTime(int startHour, int startMinute, int endHour, int endMinute)

设置角标 (setBadge仅 iOS)

setBadgeMobpushPlugin.setBadge(int badge);

清空角标,不清除通知栏消息记录 (clearBadge仅 iOS)

clearBadgeMobpushPlugin.clearBadge();

获取注册Id(getRegistrationId)

getRegistrationId
MobpushPlugin.getRegistrationId().then((Map<String, dynamic> ridMap) {print(ridMap);String regId = ridMap['res'].toString();print('------>#### registrationId: ' + regId);
});

Flutter iOS端注意事项

由于插件更新,SDK的Pod依赖被替换,Flutter 本身写入Pod文件不会先执行删除原有依赖,导致可能会出现原有本地库依然存在,请检查Pod文件夹下文件,直接手动删除mob_pushsdk 以及 MOBFoundation文件即可,如有疑问,请直接通过官网和我们联系。

其他问题

demo地址

demo: GitHub地址

推送证书制作

推送证书申请流程见:推送证书文档

MobPush for Flutter相关推荐

  1. flutter常用库整理

    目前除了官方提供的package和plugin库外,第三方开发者也开发了大量好用的开源工具,这里稍作整理以供查阅. 目录 基础库 控件库 插件库 三方SDK 其他 脚本工具 开源组织 dart仓库 参 ...

  2. 国内第三方移动推送对接调查:Android、IOS、Flutter,各种云推送、个推、极光、统一推送联盟

    文章目录 前言 一.来自小组成员的争议 二.开启调查 三.调查结果 总结 前言 第三方移动推送对接,刚开始是移动端发起的.在开会讨论这个对接时,心里突然很迷茫,为什么要做第三方移动推送对接?我们自己为 ...

  3. Flutter 拨打电话和跳转网页

    首先需要一如库 url_launcher  如下 具体写法如下 import 'package:flutter/material.dart'; import 'package:url_launcher ...

  4. flutter导入第三方库

    在pubspec.yaml 文件中找到 dependencies 在里面填写 第三方库即可 例如图中我写了fluttertoast库 特别注意:导入的位置要不dependencies下面的flutte ...

  5. Flutter 导包 以及体验

    Flutter 第一个list 体验 具体位置看图吧 是在pubspec.yaml 里面的 dev_dependencies 里面 然后点击packages_get flutter 不用每次都运行,保 ...

  6. Flutter 配置

    参考 Flutter 中文网 配置的 这里说一下 https://flutterchina.club/setup-windows/ 1 如果自己不能翻墙 先配置镜像 使用镜像 由于在国内访问Flutt ...

  7. flutter中的路由跳转

    在前面的基本路由和命名路由中,都演示了如何进行路由跳转,并且在路由跳转以后,可以借用系统自带的按钮就行返回上一级,当然了,也可以自定义按钮返回上一级. 返回上一级 在前面的例子中,当从Home.dar ...

  8. Flutter 网络请求库http

    http 集成http库 https://pub.dartlang.org/packages/http 添加依赖 dependencies:http: ^0.12.0 安装 flutter packa ...

  9. 配置flutter For IOS

    https://www.cnblogs.com/lovestarfish/p/10628205.html 第一步,下载flutter最新版,解压到自己的目录里: 提供网址:https://flutte ...

最新文章

  1. 【Live555】live555源码详解(六):FramedSource、RTPSource、RTPSink
  2. 从Flash Remoting For .Net 返回一个数组数据给Flash
  3. sqlite只能用于android系统,Android 数据库的使用 -- Sqlite
  4. python能处理多大的数据-使用Python Pandas处理亿级数据
  5. linux vnc的小黑点和鼠标不同步_公欲善其事 | VNC的安装和使用
  6. mysql batis传多个参数_Mybatis传多个参数(三种解决方案)
  7. UVA-714 二分
  8. 学习Spring Boot前需要了解的Spring基础知识
  9. 系统学习深度学习(二十七)--CTC
  10. 发送HTTP请求返回415状态码的解决办法
  11. 计算机课程设计 校园网规划设计与实现,校园网的规划与实现.doc
  12. 等保2.0三级安全要求
  13. 服务器版“永恒之蓝”高危预警 (Samba远程命令执行漏洞CVE-2017-7494) 攻击演示...
  14. SEO搜索引擎优化是什么
  15. LittleVGL体验记录
  16. 5财务分析的基本方法-盈利能力分析
  17. 微软代码签名证书使用指南(SignTool)
  18. 一篇文章了解什么是增长黑客
  19. 昆仑ONLINE外挂脚本--基于Seraph
  20. 这几年我看过的书,力荐书单(含技术和非技术)

热门文章

  1. linux no root file or directory,安装Ubuntu时出现“no root file system is defined”的问题解决...
  2. 用计算机画魔方的一个面,计算机求解魔方算法.pdf
  3. 在计算机网络的s,在计算机网络中传输二进制信息时,经常使用的速率单位有“kb/s”、“Mb/s”等。其中,1Mb/s=1000kb/s...
  4. 除了高额房贷,美国购房者仍面临其他“财政危机”
  5. 你拥有的知识比你想象中更有意义和价值
  6. 计算机原理 中断,中断及中断系统-微计算机原理-电子发烧友网站
  7. mysql 1032 1062_MySQL 主从复制 ERROR-1032
  8. 【C语言进阶】C语言程序设计:动态通讯录(顺序表实现)
  9. 阿里万亿交易量级下的秒级监控
  10. 无限循环小数四则运算_无尽小数的公理及其四则运算.doc