MENU

Flutter使用极光推送Android和ios配置踩坑笔记

October 13, 2022 • 笔记,flutter

预先准备

仓库地址

安装

dependencies:
  jpush_flutter: 2.1.4

申请应用

image.png

安卓配置

在 build.gradle 中添加如下代码

ndk {
    abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a'
}
manifestPlaceholders += [
    JPUSH_PKGNAME : applicationId,
    JPUSH_APPKEY : "应用管理的keyId",
    JPUSH_CHANNEL : "developer-default",
]

坑 1:'arm64-v8a'后的逗号要删除,否则无法运行

坑 2:manifestPlaceholders = 无法识别,改成 +=即可

然后设置一下版本

minSdkVersion 17
targetSdkVersion 28

修改 Manifest 文件

// activity标签中:
android:name="io.flutter.embedding.android.FlutterFragmentActivity"

写代码

import 'package:jpush_flutter/jpush_flutter.dart';

void initJpush() {
    JPush jpush = new JPush();
    jpush.setup(
      appKey: "应用管理keyId",
      channel: "theChannel",
      production: false,
      debug: false, // 设置是否打印 debug 日志
    );
    jpush.getRegistrationID().then((rid) {
      print('注册的 id:$rid');
    });
    jpush.setAlias("haian").then((map) {
      print('用户被指定:haian');
    });
    // IOS需要设置这个
    jpush.applyPushAuthority(
        new NotificationSettingsIOS(sound: true, alert: true, badge: true));
    jpush.addEventHandler(
      // 接收通知回调方法。
      onReceiveNotification: (Map<String, dynamic> message) async {
        print("flutter onReceiveNotification: $message");
      },
      // 点击通知回调方法。
      onOpenNotification: (Map<String, dynamic> message) async {
        print("flutter onOpenNotification: $message");
      },
      // 接收自定义消息回调方法。
      onReceiveMessage: (Map<String, dynamic> message) async {
        print("flutter onReceiveMessage: $message");
      },
    );
  }

使用

image.png

IOS 配置

准备开发者账号

配置 Identifiers

如果没有找到本地的 Identifier,则需要手动添加

image.png

添加的时候需要勾选 Push 服务

image.png

配置证书

选择此服务(开发 + 生产环境)image.png

选择之前创建的 Identifier

image.png

申请证书,打开钥匙串管理

image.png填写内容,存储到磁盘,保存好密钥

image.png

上传这个证书,然后下载生成的证书

image.png

之后打开此证书,导出为 p12 文件

image.png

配置 xcode

防止出错,info 配置文件修改一下 Bundle identifier

image.png

添加 push 服务

image.png

error pod install

项目目录运行 sudo gem install ffi 或者 sudo gem install ffi -- --enable-libffi-alloc

打开 ios 文件夹,运行 arch -x86_64 pod install 或者 pod install

模拟器无法运行

使用 Jpush 之后无法在模拟器运行了,只能链接真机运行。

代码与使用

和安卓上文内容一样