欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

MobPushforFlutter集成准备,

来源: 开发者 投稿于  被查看 22757 次 评论:276

MobPushforFlutter集成准备,


目录
  • 集成准备
  • iOS
  • Android
  • SDK API
    • 回传用户隐私授权结果 (submitPrivacyGrantResult)
    • 设置远程推送环境
    • 设置远程推送环境 (setAPNsForProduction仅 iOS)
    • 停止推送(stopPush)
    • 重新打开推送服务(restartPush)
    • 是否已停止接收推送(isPushStopped)
    • 设置别名(setAlias)
    • 获取别名(getAlias)
    • 删除别名(deleteAlias)
    • 添加标签(addTags)
    • 获取标签(getTags)
    • 删除标签(deleteTags)
    • 清空标签(cleanTags)
    • 发送本地通知(addLocalNotification)
    • 绑定手机号(bindPhoneNum)
    • 测试模拟推送,用于测试(send)
    • 设置点击通知是否跳转默认页 (setClickNotificationToLaunchMainActivity 仅Android)
    • 移除本地通知(removeLocalNotification 仅Android)
    • 清空本地通知(clearLocalNotifications 仅)
    • 设置通知栏icon,不设置默认取应用icon(setNotifyIcon 仅Android)
    • 设置通知静音时段(推送选项)(setSilenceTime 仅Android)
    • 设置角标 (setBadge仅 iOS)
    • 清空角标,不清除通知栏消息记录 (clearBadge仅 iOS)
    • 获取注册Id(getRegistrationId)
  • Flutter iOS端注意事项

    集成准备

    这是一个基于 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 {
            ...
            // 集成MobPush
            classpath "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"
        //配置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"
                }
            }
        }
    }
    

    添加代码

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

    @Override
      protected 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)

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

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

    setAPNsForProduction
    if (Platform.isIOS) {
         // 开发环境 false, 线上环境 true
          MobpushPlugin.setAPNsForProduction(false)
    }
    

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

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

    停止推送(stopPush)

    stopPush
    MobpushPlugin.stopPush();
    

    重新打开推送服务(restartPush)

    restartPush
    MobpushPlugin.restartPush();
    

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

    isPushStopped
    MobpushPlugin.isPushStopped();
    

    设置别名(setAlias)

    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");
    });
    

    获取别名(getAlias)

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

    删除别名(deleteAlias)

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

    添加标签(addTags)

    addTags
    List 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)

    getTags
    MobpushPlugin.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)

    deleteTags
    List 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)

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

    发送本地通知(addLocalNotification)

    addLocalNotification
    MobpushPlugin.addLocalNotification();
    

    绑定手机号(bindPhoneNum)

    bindPhoneNum
    MobpushPlugin.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)

    setClickNotificationToLaunchMainActivity
    MobpushPlugin.setClickNotificationToLaunchMainActivity (bool enable);
    

    移除本地通知(removeLocalNotification 仅Android)

    removeLocalNotification
    MobpushPlugin.removeLocalNotification(int notificationId);
    

    清空本地通知(clearLocalNotifications 仅)

    clearLocalNotifications
    MobpushPlugin.clearLocalNotifications();
    

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

    setNotifyIcon
    MobpushPlugin.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)

    setBadge
    MobpushPlugin.setBadge(int badge);
    

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

    clearBadge
    MobpushPlugin.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地址 GitHub地址

    以上就是MobPush for Flutter集成准备的详细内容,更多关于MobPush for Flutter的资料请关注3672js教程其它相关文章!

    您可能感兴趣的文章:
    • flutter消息推送客户端集成方案详解
    • Flutter集成高德地图并添加自定义Maker的实践
    • Android集成Flutter
    • Android原生项目集成Flutter解决方案
    • 大型项目里Flutter测试应用实例集成测试深度使用详解

    用户评论