赞
踩
继【Flutter】极光推送配置流程(极光通道/华为厂商/IOS) 章一
并且,我大概率不会去修改第一篇文章的内容。
随着我自己在配置公司的项目的同时,我希望一直更新这个推送系列文章。
在章一配置完后,也是出现了一些问题,所以本章主要围绕
首先是极光插件,可以去更新,但要看更新了什么内容
看这个更新内容,JPush 5.2.4
记得在之前那篇blog,我写了5.2.3
所以在.gradle文件中,把版本提到5.2.4(这里我直接截)
小米是需要上架应用的,需要企业开发者。
以下截图和代码是公司的项目,部分地方就马赛克了
需要公司提供资料(软著/APP备案等),上架可能会快一些(1天以上)
通道要申请下来,这里的类别,记得按自己需要。
类别选择参考这篇
填完类别等信息后
这里的channel_ID记一下
这里的appKey AppSecret AppID对应极光那三个要填写的
名字都一样的,把内容填写进去,再开启
回到项目
看这篇文章
// 小米
implementation 'cn.jiguang.sdk.plugin:xiaomi:5.2.4.a'
小米参数
若出现
xiao mi push register success
就代表配置好了
这里的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}); @override 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; @override 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; @override void initState() { final content = utf8.encode("$appKey:$masterSecret"); base64AuthString = "Basic ${base64Encode(content)}"; super.initState(); } @override 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,就可以了。不清楚原因,所以就先记录一下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。