uni-app 离线推送小米参数非法字符
uni-app 离线推送小米参数非法字符
操作步骤:
- 调用发消息云函数小米离线推送
预期结果:
- 离线成功推送
实际结果:
- 报错提示:doc field should not contain illegal character,小米离线收不到消息
bug描述:
- 小米离线推送,参数类型错误,中间的点( . )不能识别,提交时报错。把 点 替换成 / ,不报错但离线消息也收不到
附件
项目信息
项目属性 | 值 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | 12.5.1 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.36 |
手机系统 | Android |
手机系统版本号 | Android 15 |
手机厂商 | 小米 |
手机机型 | xiaomi15pro |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
更多关于uni-app 离线推送小米参数非法字符的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 离线推送小米参数非法字符的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在处理uni-app离线推送小米设备时遇到“参数非法字符”的错误,通常是因为推送参数中包含了小米推送服务不允许的字符或者格式不正确。为了确保推送参数符合小米推送服务的要求,我们可以参考小米官方文档对参数进行严格的校验和格式化。
以下是一个简单的uni-app示例代码,展示如何构建并发送推送消息给小米设备,同时避免参数非法字符的问题。假设我们已经通过小米开发者平台获取了相关的AppID、AppKey和MasterSecret,并且已经正确配置了uni-app的离线推送插件。
// 引入必要的模块
const xiaomiPush = require('uni-push-xiaomi'); // 假设这是一个封装好的小米推送模块
// 小米推送配置信息
const appId = 'your-app-id';
const appKey = 'your-app-key';
const masterSecret = 'your-master-secret';
// 推送消息内容(确保不包含非法字符)
const message = {
title: 'Hello, Xiaomi!', // 标题,确保不包含特殊字符或过长
content: 'This is a test push message.', // 内容,同样确保格式正确
registration_id: 'device-registration-id', // 设备注册ID
// 其他可选参数,根据小米推送文档进行配置
// ...
};
// 校验并发送推送消息
function sendPushMessage(message) {
// 在这里可以添加额外的校验逻辑,比如检查字符串长度、是否包含特殊字符等
// 例如:使用正则表达式校验内容是否只包含字母、数字和空格等合法字符
if (/^[a-zA-Z0-9\s]+$/.test(message.title) && /^[a-zA-Z0-9\s]+$/.test(message.content)) {
xiaomiPush.send({
appId: appId,
appKey: appKey,
masterSecret: masterSecret,
payload: JSON.stringify(message),
}, (err, res) => {
if (err) {
console.error('推送失败:', err);
} else {
console.log('推送成功:', res);
}
});
} else {
console.error('消息内容包含非法字符');
}
}
// 发送推送消息
sendPushMessage(message);
在上面的代码中,我们假设了一个封装好的小米推送模块uni-push-xiaomi
,并展示了如何构建推送消息对象以及发送推送消息。在发送之前,我们使用正则表达式对消息标题和内容进行了简单的校验,确保它们只包含字母、数字和空格等合法字符。如果包含非法字符,则打印错误信息。
请注意,实际开发中应根据小米推送服务的具体要求调整校验逻辑和推送参数。同时,确保使用的推送模块或SDK是最新版本,以避免已知的bug和兼容性问题。