错误 Firebase Cloud Functions Typescript Payload contains an invalid value for the "notification.

Posted

技术标签:

【中文标题】错误 Firebase Cloud Functions Typescript Payload contains an invalid value for the "notification.loc-args" property【英文标题】:Error Firebase Cloud Functions Typescript Payload contains an invalid value for the "notification.loc-args" property 【发布时间】:2018-10-25 03:26:54 【问题描述】:

从我的 Firebase 函数的 Firebase 云函数日志中收到以下错误消息。我正在尝试使用具有动态值的本地化创建远程推送通知有效负载。

错误:消息负载包含“notification.loc-args”属性的无效值。值必须是字符串。

有效载荷的 TypeScript 代码

  var values : String[] = [];
  values.push('Johnny Appleseed');
  const payload = 
    notification: 
      'title-loc-key': 'INVITE_PUSH_TITLE',  
      'loc-key': 'INVITE_PUSH_BODY',
      'loc-args': values,
      'type': 'Invite',
      'fromName': name,
      'userId': uid,
    
  ;

'loc-args' 属性已包含字符串数组。这里有什么问题?

以下示例显示了它的设想,基于Apple documentation

ios 本地化参数

"GAME_PLAY_REQUEST_FORMAT" = "%@ and %@ have invited you to play Monopoly";

有效载荷


    "aps" : 
        "alert" : 
            "loc-key" : "GAME_PLAY_REQUEST_FORMAT",
            "loc-args" : [ "Jenna", "Frank"]
        
    

【问题讨论】:

错误告诉你值必须是字符串。它们不能是字符串数组。此限制由 FCM 而非 Apple 强制执行。使用 FCM 发送消息时必须遵守 FCM 规则。 【参考方案1】:

FCM 的以下负载解决了我的问题。

const payload = 
    notification: 
      title: 'You have a new team request!',
      body: `$name sent team request.!`,
      'title_loc_key': 'TEAM_INVITE_PUSH_TITLE',  
      'body_loc_key': 'TEAM_INVITE_PUSH_BODY',
      'body_loc_args': `["$name"]`
    ,
    data: 
      type: 'teamInvite',
      fromName: name,
      userId: uid
    
  ;

【讨论】:

以上是关于错误 Firebase Cloud Functions Typescript Payload contains an invalid value for the "notification.的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Cloud 功能部署错误

如何处理 Firebase Cloud Functions 中的错误 JSON?

Firebase Cloud Functions 部署错误 - 超出配额

Firebase Cloud Function 部署 tslint 错误

Cloud Functions Firebase CLI 预部署错误(打字稿)

Firebase Cloud Functions bitly 示例抛出错误