59 Flutter Jpush极光推送

Flutter Jpush极光推送

1.简介

极光推送,集成了华为、小米、vivo、oppo等手机厂商的系统推送通知服务,可以很方便的去集成 和使用,在Flutter中,也退出了极光推送的服务

2.使用

1.依赖

jpush_flutter: 2.0.9

2.Android

android: {
  ....
  defaultConfig {
    applicationId "替换成自己应用 ID"
    ...
    ndk {
	//选择要添加的对应 cpu 类型的 .so 库。
	abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a',        
    }

    manifestPlaceholders = [
        JPUSH_PKGNAME : applicationId,
        JPUSH_APPKEY : "appkey", // NOTE: JPush 上注册的包名对应的 Appkey.
        JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
    ]
  }    
}

IOS上

  • 在 xcode8 之后需要点开推送选项: TARGETS -> Capabilities -> Push Notification 设为 on 状态
import 'package:jpush_flutter/jpush_flutter.dart';

3.初始化

初始化:

 // Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    String platformVersion;

    try {
      jpush.addEventHandler(
          onReceiveNotification: (Map<String, dynamic> message) async {
            print("flutter onReceiveNotification: $message");
            setState(() {
              debugLable = "flutter onReceiveNotification: $message";
            });
          }, onOpenNotification: (Map<String, dynamic> message) async {
        print("flutter onOpenNotification: $message");
        setState(() {
          debugLable = "flutter onOpenNotification: $message";
        });
      }, onReceiveMessage: (Map<String, dynamic> message) async {
        print("flutter onReceiveMessage: $message");
        setState(() {
          debugLable = "flutter onReceiveMessage: $message";
        });
      }, onReceiveNotificationAuthorization:
          (Map<String, dynamic> message) async {
        print("flutter onReceiveNotificationAuthorization: $message");
        setState(() {
          debugLable = "flutter onReceiveNotificationAuthorization: $message";
        });
      });
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    jpush.setup(
      appKey: "222222", //你自己应用的 AppKey
      channel: "theChannel",
      production: false,
      debug: true,
    );
    jpush.applyPushAuthority(
        new NotificationSettingsIOS(sound: true, alert: true, badge: true));

    // Platform messages may fail, so we use a try/catch PlatformException.
    jpush.getRegistrationID().then((rid) {
      print("flutter get registration id : $rid");
      setState(() {
        debugLable = "flutter getRegistrationID: $rid";
      });
    });

    // 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(() {
      debugLable = platformVersion;
    });
  }

Jpush发送通知

                          var localNotification = LocalNotification(
                              id: 234,
                              title: 'fadsfa',
                              buildId: 1,
                              content: 'fdas',
                              fireTime: fireDate,
                              subtitle: 'fasf',
                              badge: 5,
                              extra: {"fa": "0"});
                          jpush
                              .sendLocalNotification(localNotification)
                              .then((res) {
                            setState(() {
                              debugLable = res;
                            });
                          });

4.其中打包编译过程中问题

couldn’t find libflutter.so

 buildTypes {
            debug {
                ndk {
                    abiFilters "x86","x86_64","arm64-v8a"
                }
            }
            release {
                ndk {
                    abiFilters "armeabi-v7a"
                }
            }
        } 

参考该连接:https://blog.csdn.net/rd_w_csdn/article/details/103391278


版权声明:本文为LJLThomson原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。