前言

在公司使用flutter 开发app的时候,需要用到推送,最终选择了MobPush,MobPush好处在于完全免费,通知也支持部分厂商(华为、小米、魅族、OPPO、vivo),而且集成简单,有文档案例。这里只讲述了,我使用时需要执行的操作。
快速入口: MobPush官方网站.

flutterApp

首先我这里的flutter项目 初始化android是通过kotlin。第一步先添加插件

 dependencies:
     mobpush_plugin:

IOS:
IOS需要查看IOS的集成文档
官方文档更加详细: IOS集成文档入口.

android:
首先在 根目录下的 android 项目中的build.gradle添加

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    // 导入MobSDK, 推送
    classpath 'com.mob.sdk:MobSDK:+'
    //这里和官方文档不一样,我不需要FCM厂商推送 所以没配置
}

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

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
// 导入MobSDK, 推送
apply plugin: 'com.mob.sdk'
MobSDK {
    appKey "******"			//在MobPush注册的app key
    appSecret "******"	//在MobPush注册的app secret
    //配置MobPush
    MobPush {
        //配置厂商推送(可选配置,不需要厂商推送可不配置,需要哪些厂商推送只需配置哪些厂商配置即可)
        devInfo {
            //配置小米厂商推送
            XIAOMI {
            	//特殊厂商配置的appId 与 appKey
                appId "******"
                appKey "******"
            }
            //配置华为厂商推送
            HUAWEI {
                appId "******"
            }
        }
    }
    //配置MobShare
}

kotlin初始化android项目的,还需要在 MainActivity 文件中进行配置,

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

这样配置方面就已经完成
接下在是在使用到推送的地方(例如main.dart)

//设置隐私协议授权状态
MobpushPlugin.updatePrivacyPermissionStatus(true);
//设置远程推送环境,向用户授权(仅 iOS)
if (Platform.isIOS) {
    MobpushPlugin.setCustomNotification();
    // 开发环境 false, 线上环境 true
    MobpushPlugin.setAPNsForProduction(false)
}
//获取注册的设备id, 这个可以不初始化
MobpushPlugin.getRegistrationId().then((Map<String, dynamic> ridMap) {
    print(ridMap);
    String regId = ridMap['res'].toString();
    print('------>#### registrationId: ' + regId);
});
//设置别名,注意,每个别名只能存在一台设备,后者会覆盖前者。厂商通道,会根据后者来进行推送
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");
});

更多的方法就不一一详解,具体可以去官方文档查看。

官方文档更加详细: flutter集成文档入口.

进行厂商注册

官方文档更加详细: 特殊厂商处理.

后台服务器

官方文档: MobPush 服务端集成SDK.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐