【Flutter】极光推送配置流程(小米厂商通道) 章二

embedded/2024/10/19 2:23:30/

前言

继【Flutter】极光推送配置流程(极光通道/华为厂商/IOS) 章一
并且,我大概率不会去修改第一篇文章的内容。
随着我自己在配置公司的项目的同时,我希望一直更新这个推送系列文章。
在章一配置完后,也是出现了一些问题,所以本章主要围绕

  • 华为厂商通道配置出现的问题
  • 如何配置小米厂商通道

极光插件

首先是极光插件,可以去更新,但要看更新了什么内容
在这里插入图片描述
看这个更新内容,JPush 5.2.4
记得在之前那篇blog,我写了5.2.3
所以在.gradle文件中,把版本提到5.2.4(这里我直接截)
在这里插入图片描述

配置小米厂商通道

小米是需要上架应用的,需要企业开发者。
以下截图和代码是公司的项目,部分地方就马赛克了

上架

需要公司提供资料(软著/APP备案等),上架可能会快一些(1天以上)
在这里插入图片描述

推送申请估计要点时间(3天以上)

在这里插入图片描述
在这里插入图片描述
通道要申请下来,这里的类别,记得按自己需要。
在这里插入图片描述
类别选择参考这篇
在这里插入图片描述
填完类别等信息后
这里的channel_ID记一下
在这里插入图片描述
这里的appKey AppSecret AppID对应极光那三个要填写的
在这里插入图片描述
名字都一样的,把内容填写进去,再开启
在这里插入图片描述

build.gradle

回到项目
看这篇文章
在这里插入图片描述

配置依赖

在这里插入图片描述

    // 小米implementation 'cn.jiguang.sdk.plugin:xiaomi:5.2.4.a'

小米参数
在这里插入图片描述

填写小米参数

在这里插入图片描述

用一台小米手机来运行项目

在这里插入图片描述
若出现

xiao mi push register success

就代表配置好了
在这里插入图片描述

调用API发送推送

在这里插入图片描述
这里的channel id是之前创建的通道的id
代码之前篇章一有贴过
在这里插入图片描述

import 'dart:convert';
import 'dart:io';import 'package:dio/dio.dart';
import 'package:flutter/material.dart';void main() {runApp(const MyApp());
}class MyApp extends StatelessWidget {const MyApp({super.key});Widget build(BuildContext context) {return MaterialApp(title: '推送',theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: const MyHomePage(title: '信息推送'),);}
}class MyHomePage extends StatefulWidget {const MyHomePage({super.key, required this.title});final String title;State<MyHomePage> createState() => _MyHomePageState();
}class _MyHomePageState extends State<MyHomePage> {final String appKey = "XXXX";final String masterSecret = "XXXXXXX";late String base64AuthString;final Dio dio = Dio();late String notificationAlert;late String notificationTitle;late String notificationAudienceAlias;void initState() {final content = utf8.encode("$appKey:$masterSecret");base64AuthString = "Basic ${base64Encode(content)}";super.initState();}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(backgroundColor: Theme.of(context).colorScheme.inversePrimary,title: Text(widget.title),),body: Center(child: Padding(padding: const EdgeInsets.all(8.0),child: ListView(children: [TextField(decoration: const InputDecoration(labelText: "主标题",hintText: "请输入...",),onChanged: (s) {notificationAlert = s;},),TextField(decoration: const InputDecoration(labelText: "副标题",hintText: "请输入...",),onChanged: (s) {notificationTitle = s;},),TextField(decoration: const InputDecoration(labelText: "别名",hintText: "请输入...",),onChanged: (s) {notificationAudienceAlias = s;},),Padding(padding: const EdgeInsets.all(8.0),child: ElevatedButton(onPressed: () {showDialog(context: context,builder: (context) {return SimpleDialog(title: const Text("确定发送?"),children: [SimpleDialogOption(child: const Text("确定"),onPressed: () {pushMessage(notificationAlert: notificationAlert,notificationTitle: notificationTitle,notificationAudienceAlias: [notificationAudienceAlias],);Navigator.of(context).pop();},),SimpleDialogOption(child: const Text("取消"),onPressed: () {Navigator.of(context).pop();},)],);});},child: const Text("推送消息"),),),],),),),);}/// 推送pushMessage({required String notificationAlert,required String notificationTitle,required List<String> notificationAudienceAlias,}) async {const String url = "https://api.jpush.cn/v3/push";var data = json.encode({"platform": ["android", "ios"],"inapp_message": {"inapp_message": false},"options": {"classification": 0,"time_to_live": 86400,"apns_production": false,"third_party_channel": {"huawei": {"skip_quota": false,"distribution": "secondary_push","channel_id": "","category": "DEVICE_REMINDER","receipt_id": ""},"xiaomi": {"channel_id": "XXXXXX","distribution": "secondary_push","skip_quota": false}}},"notification": {"alert": notificationAlert,"android": {"alert": notificationAlert,"title": notificationTitle,"intent": {"url": "intent:#Intent;action=android.intent.action.MAIN;end"},"sound": "","priority": 0,"category": "","alert_type": 7,"style": 0,"builder_id": 0,"large_icon": "","badge_add_num": 1,"extras": {"param": "123"}},"ios": {"alert": {"title": notificationAlert,"body": notificationTitle,},"content-available": 0,"mutable-content": 1,"sound": "default","badge": "+1","thread-id": "","interruption-level": "active","filter-criteria": "","extras": {"参数": "A"}}},"audience": {"alias": notificationAudienceAlias,}});final response = await dio.request(url,data: data,options: Options(headers: {HttpHeaders.authorizationHeader: base64AuthString,},method: "POST",),);print(response.data.toString());}
}

后台关闭APP,杀掉APP,再发送一下
在这里插入图片描述
手机收到就代表配置完成
在这里插入图片描述

遇到的问题

设置别名

这个是在公司项目里面遇到的
需求是这样的:注册好极光的插件之后,若用户登录之后,我需要给当前设备设置别名为手机号。
当调用

final value = await jPush.setAlias("17777777777");

在这里插入图片描述
在这里插入图片描述
这个问题目前解决的办法是在手机号前加了一些数字比如000001777777777,就可以了。不清楚原因,所以就先记录一下。


http://www.ppmy.cn/embedded/26241.html

相关文章

Map系列集合的底层原理及集合嵌套

HashMap集合的底层原理 HashMap跟HashSet的底层原理是一模一样的&#xff0c;都是基于哈希表实现的。 实际上:原来学的Set系列集合的底层就是基于Map实现的&#xff0c;只是Set集合中的元素只要键数据&#xff0c;不要值数据而已。 public HashSet()f{ mapnew HashMap<>…

Android面试题(持续更新中)

一、抽象类与接口的区别&#xff1f; 1、抽象类可以提供成员方法的实现细节&#xff0c;而接口中只能存在 public 抽象方法&#xff1b; 2、抽象类中的成员变量可以是各种类型的&#xff0c;而接口中的成员变量只能是 public static final 类型的&#xff1b; 3、接口中不能含有…

开源AI名片商城系统小程序:智能管理引领营销新潮流

在当今数字化时代&#xff0c;如何高效地管理客户关系、提升营销效果&#xff0c;成为了企业关注的焦点。开源AI名片商城系统小程序凭借其智能化管理功能&#xff0c;为企业提供了一个全新的解决方案。 一、访客画像&#xff1a;精准洞察&#xff0c;个性化内容培育 该系统能够…

Kafka学习笔记01【2024最新版】

一、kafka-课程介绍 官网地址&#xff1a;Apache KafkaApache Kafka: A Distributed Streaming Platform.https://kafka.apache.org/ kafka 3.7.0版本&#xff0c;作为经典分布式订阅、发布的消息传输中间件&#xff0c;kafka在实时数据处理、消息队列、流处理等领域具有广泛…

docker-ubuntu-24.04安装openresty1.21.4.3全过程

拉取最新的ubuntu镜像 docker pull ubuntu:latest 创建启动容器 docker run -it --name 容器名称 -p 8082:8082 镜像id /bin/bash 更换apt-get为阿里云镜像 sed -i sarchive.ubuntu.com//mirrors.aliyun.com/g /etc/apt/sources.list && apt-get update 创建目录…

计算机视觉(CV)简介

计算机视觉&#xff08;CV&#xff09;技术是一种在计算机中模拟人类视觉和图像处理能力的技术。它可以从图像和视频中提取有用的信息&#xff0c;并进行分析和理解。以下是计算机视觉技术的优势和挑战的一些例子&#xff1a; 优势&#xff1a; 高效处理大量图像数据&#xff…

Type-C转音频(USB2.0数据传输)+PD充电芯片乐得瑞LDR6500/LDR6023

LDR6500 USB-C DRP 接口 USB PD 通信芯片概述 Type-C转音频(USB2.0数据传输)PD充电芯片乐得瑞LDR6500LDR6500是乐得瑞科技针对USB Type-C标准中的Bridge设备而开发的USB-C DRP&#xff08;Dual Role Port&#xff0c;双角色端口&#xff09;接口USB PD&#xff08;Power Deliv…