简单地我想使用Google云功能将通知发送到订阅主题组合的设备。
文档说:
"主题中的'topica'
我尝试做的是:
var topicsConditions = `'${type}' in topics && ('${area}' in topics || '${city}' in topics)`;
// Send a message to devices subscribed to the provided topic.
admin.messaging().sendToCondition(topicsConditions, notificationPayload)
.then(function(response) {
// See the MessagingTopicResponse reference documentation for the
// contents of response.
console.log("Successfully sent message:", response);
})
.catch(function(error) {
console.log("Error sending message:", error);
});
但我一直遇到此错误:
错误发送消息:{错误:提供了无效的参数。原始服务器响应:"无效"条件"字段:仅支持'主题'条件 "。状态代码:400。 在firbasemessagingerror.error(本地( 在firebasemessagingerror.firebaseerror [作为构造函数](/user_code/node_modules/firebase-admin/lib/lib/utils/error.js:39:28( 在firebasemessagingerror.prefixedfirebaseerror [作为构造函数](/user_code/node_modules/firebase-admin/lib/lib/utils/error.js:85:28( 在New Firebasemessagingerror(/USER_CODE/NODE_MODULES/FIREBASE-ADMIN/LIB/UTILS/ERROR.JS:241:16( at/user_code/node_modules/firebase-admin/lib/messaging/messaging-api-request.js:115:23 在process._tickdomaincallback(内部/process/next_tick.js:135:7( ERRORINFO: {代码:'消息传递/无效 - argument', 消息:'提供的参数无效。原始服务器响应:"无效"条件"字段"字段:仅支持'主题'条件 n。状态代码:400。},, codeprefix:'Messaging'}
有人可以将我引导到正确的语法?
编辑:主题的日志输出是:
主题条件='mytype '主题中的&&(主题中的'giza,埃及'
主题名称中可以使用的字符仅限于:
- 小写字母
a
toz
- 大写字母
A
toZ
- Digits
0
到9
- 字符
-
_
.
%
CC_11
您的主题名称包含无效字符+
,,
,Space和Arabic。
更多详细信息在文档中:
开发人员可以选择与常规的任何主题名称 表达式:" [a-za-z0-9 -_。〜%] "
有效条件字符串的一个示例是:
var topicsConditions = "'Aswan' in topics && ('Giza' in topics || 'Cairo' in topics)";
我在呼叫admin.messaging().sendToCondition()
如果要与变量一起使用,则可以像这样使用
const condition = `'${OLDUSERS}' in topics || '${CURRENTLYBOOKED}' in topics`;
并在这种情况下使用发送方法。