Flutter 个推——集成实现

添加依赖:getuiflut: ^0.2.3
首先:
->登录个推开放者平台 https://dev.getui.com/dev/#/login
->创建应用
->安卓,苹果创建在同一应用下

安卓配置:
android->app->build.gradle->defaultConfig 下加入

manifestPlaceholders = [
    GETUI_APP_ID    : "jfUtNJ5PQz6PjWbNQx06M7",
    GETUI_APP_KEY   : "yXrNiePQW48dn3jKPmToy6",
    GETUI_APP_SECRET: "ITKj9szgcr9RENQzZQHhQ1",
    // 下面是多厂商配置,如需要开通使用请联系技术支持
    // 如果不需要使用,预留空字段即可
     XIAOMI_APP_ID   : "",
     XIAOMI_APP_KEY  : "",
     MEIZU_APP_ID    : "",
     MEIZU_APP_KEY   : "",
     HUAWEI_APP_ID   : "",
     OPPO_APP_KEY   : "",
     OPPO_APP_SECRET  : "",
     VIVO_APP_ID   : "",
     VIVO_APP_KEY  : ""
]

苹果配置
Xcode->build,将推送push开启

flutter 相关
具体参考文档
代码如下

import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:io';
import 'package:flutter/services.dart';
import 'package:getuiflut/getuiflut.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
 String _platformVersion = 'Unknown';
String _payloadInfo = 'Null';
String _notificationState = "";
String _getClientId = "";
String _getDeviceToken = "";
String _getVoipToken = "";
String _onReceivePayload = "";
String _onReceiveNotificationResponse = "";
String _onAppLinkPayLoad = "";
String _onReceiveVoipPayLoad;
//final Getuiflut getui = new Getuiflut();

@override
void initState() {
  super.initState();
  initPlatformState();
}

// Platform messages are asynchronous, so we initialize in an async    method.
Future<void> initPlatformState() async {
 String platformVersion;
String payloadInfo = "default";
String notificationState = "default";
// Platform messages may fail, so we use a try/catch PlatformException.

if (Platform.isIOS) {
  Getuiflut().startSdk(
      appId: "jfUtNJ5PQz6PjWbNQx06M7",
      appKey: "yXrNiePQW48dn3jKPmToy6",
      appSecret: "ITKj9szgcr9RENQzZQHhQ1");
}

try {
  platformVersion = await Getuiflut.platformVersion;

  print('platformVersion' + platformVersion);
} on PlatformException {
  platformVersion = 'Failed to get platform version.';
}

// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;

setState(() {
  _platformVersion = platformVersion;
  _payloadInfo = payloadInfo;
  _notificationState = notificationState;
});

Getuiflut().addEventHandler(
  onReceiveClientId: (String message) async {
    print("flutter onReceiveClientId: $message");
    setState(() {
      _getClientId = "ClientId: $message";
    });
  },
  onReceiveMessageData: (Map<String, dynamic> msg) async {
    print("flutter onReceiveMessageData: $msg");
    setState(() {
      _payloadInfo = msg['payload'];
    });
  },
  onNotificationMessageArrived: (Map<String, dynamic> msg) async {
    print("flutter onNotificationMessageArrived");
    setState(() {
      _notificationState = 'Arrived';
    });
  },
  onNotificationMessageClicked: (Map<String, dynamic> msg) async {
    print("flutter onNotificationMessageClicked");
    setState(() {
      _notificationState = 'Clicked';
    });
  },
  onRegisterDeviceToken: (String message) async {
    setState(() {
      _getDeviceToken = "$message";
    });
  },
  onReceivePayload: (Map<String, dynamic> message) async {
    print("flutter onReceivePayload: $message");
    setState(() {
      _onReceivePayload = "$message";
    });
  },
  onReceiveNotificationResponse: (Map<String, dynamic> message) async {
    print("flutter onReceiveNotificationResponse: $message");
    setState(() {
      _onReceiveNotificationResponse = "$message";
    });
  },
  onAppLinkPayload: (String message) async {
    setState(() {
      _onAppLinkPayLoad = "$message";
    });
  },
  onRegisterVoipToken: (String message) async {
    setState(() {
      _getVoipToken = "$message";
    });
  },
  onReceiveVoipPayLoad: (Map<String, dynamic> message) async {
    setState(() {
      _onReceiveVoipPayLoad = "$message";
    });
  },
);
 }

 Future<void> initGetuiSdk() async {
  try {
  Getuiflut.initGetuiSdk;
} catch (e) {
  e.toString();
}
 }

 Future<void> getClientId() async {
   String getClientId;
try {
  getClientId = await Getuiflut.getClientId;
  print(getClientId);
} catch (e) {
  print(e.toString());
}
}

 Future<void> getLaunchNotification() async {
Map info;
try {
  info = await Getuiflut.getLaunchNotification;
  print(info);
} catch (e) {
  print(e.toString());
}
}

 @override
 Widget build(BuildContext context) {
return MaterialApp(
  debugShowCheckedModeBanner: false,
  home: Scaffold(
    appBar: AppBar(
      title: const Text('Plugin example app'),
    ),
    body: Center(
      child: Column(children: <Widget>[
        Text('platformVersion: $_platformVersion\n'),
        Text('clientId: $_getClientId\n'),
        Text(
          'Android Public Funcation',
          style: TextStyle(
            color: Colors.lightBlue,
            fontSize: 20.0,
          ),
        ),
        Text('payload: $_payloadInfo\n'),
        Text('notificaiton state: $_notificationState\n'),
        FlatButton(
          onPressed: () {
            initGetuiSdk();
          },
          child: const Text('initGetuiSdk'),
        ),
        Text(
          'SDK Public Funcation',
          style: TextStyle(
            color: Colors.lightBlue,
            fontSize: 20.0,
          ),
        ),
        Row(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: <Widget>[
              RaisedButton(
                onPressed: () {
                  Getuiflut().onActivityCreate();
                },
                child: const Text('onActivityCreate'),
              ),
              RaisedButton(
                onPressed: () {
                  getLaunchNotification();
                },
                child: const Text('getLaunchNotification'),
              )
            ]),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: <Widget>[
            RaisedButton(
              onPressed: () {
                getClientId();
              },
              child: const Text('getClientId'),
            ),
            RaisedButton(
              onPressed: () {
                Getuiflut().stopPush();
              },
              child: const Text('stop push'),
            ),
            RaisedButton(
              onPressed: () {
                Getuiflut().resumePush();
              },
              child: const Text('resume push'),
            ),
          ],
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: <Widget>[
            RaisedButton(
              onPressed: () {
                Getuiflut().bindAlias('test', '');
              },
              child: const Text('bindAlias'),
            ),
            RaisedButton(
              onPressed: () {
                Getuiflut().unbindAlias('test', '', true);
              },
              child: const Text('unbindAlias'),
            ),
            RaisedButton(
              onPressed: () {
                List test = new List();
                test.add('abc');
                Getuiflut().setTag(test);
              },
              child: const Text('setTag'),
            ),
          ],
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: <Widget>[
            RaisedButton(
              onPressed: () {
                Getuiflut().setBadge(5);
              },
              child: const Text('setBadge'),
            ),
            RaisedButton(
              onPressed: () {
                Getuiflut().resetBadge();
              },
              child: const Text('resetBadge'),
            ),
          ],
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: <Widget>[
            RaisedButton(
              onPressed: () {
                Getuiflut().setLocalBadge(5);
              },
              child: const Text('setLocalBadge(5)'),
            ),
            RaisedButton(
              onPressed: () {
                Getuiflut().setLocalBadge(0);
              },
              child: const Text('setLocalBadge(0)'),
            ),
          ],
        ),
        Text(
          'ios Public Funcation',
          style: TextStyle(
            color: Colors.redAccent,
            fontSize: 20.0,
          ),
        ),
        Text('DeviceToken: $_getDeviceToken'),
        Text('VoipToken: $_getVoipToken'),
        Text('payload: $_onReceivePayload'),
        Text(
            'onReceiveNotificationResponse: $_onReceiveNotificationResponse'),
        Text('onAppLinkPayload: $_onAppLinkPayLoad'),
        Text('onReceiveVoipPayLoad: $_onReceiveVoipPayLoad'),
      ]),
    ),
  ),
);
}
}

以上具是参考官方文档总结的,砥砺前行,共同学习!!!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342