触发推送通知

合作伙伴触发的通知

添加消息和通知

背景

用户添加卡券后,您可能需要向其发送与该卡券相关的消息,并确保用户收到通知。使用 Add Message API 请求,并将 message_type 设置为等于 TEXT_AND_NOTIFY 时,会发生以下情况:

  1. 系统会在“卡券背面”(即详情模板)中添加“消息”项,并向已保存卡券的用户发送推送通知。
  2. 用户点按通知后,系统会将 Google 钱包打开到卡券的前端(即卡片视图),用户会在屏幕顶部看到一个带有“查看消息”按钮的标注。
  3. 点击此标注后,用户会前往卡券背面,其中会突出显示新的未读消息。

向用户发送带有通知的消息时的一些注意事项

  • 用户必须为卡券启用通知功能,才能接收与消息相关的推送通知。
  • 消息可能包含指向您的网站或应用的 URI。超链接必须指向与卡券相关的网站或应用。如果引导用户访问与通行卡无关的链接,则违反了《使用政策》
  • 您在 24 小时内最多可以发送 3 条会触发推送通知的消息。如果 Google 认为您在向用户发送垃圾信息,可能会限制您的推送通知传送配额。
  • 用户在锁定屏幕上看到的推送通知由 Google 钱包控制。
  • 您可以使用常规类或对象端点,通过 UPDATEPATCH 方法修改或移除消息数据。

集成步骤

如果您想在通过 AddMessage API 添加新的发卡机构消息时通知用户,则需要更新 AddMessageRequest,以便包含新文本的 Message 具有 MessageType TEXT_AND_NOTIFY 而不是 TEXT

在 Passes 类中添加消息并发送通知的 JSON 请求示例

  
  "id": ISSUER_ID.CLASS_ID",
  "message":
    {
        "header":"My Class message header",
        "body": "My Class message body with a <a href="https://wallet.google">Hyperlink<\a>",
        "id": "message_id",
        "message_type": "TEXT_AND_NOTIFY"
    },
  

用于在卡券对象中添加消息和通知的 JSON 请求示例

  
  "id": OBJECT_ID",
  "classId": "ISSUER_ID.CLASS_ID",
  "message":
    {
        "header":"My Object message header",
        "body": "My Object message body with a <a href="http://play.google.com/store/apps/details?id=com.google.android.apps.maps">Hyperlink<\a>",
        "id": "message_id",
        "message_type": "TEXT_AND_NOTIFY"
    },
  

示例 Response,用于添加消息并针对通行卡类进行通知

  // The updated resource
      {
      "kind": "walletobjects#walletObjectMessage",
      "header": "My Object message header",
      "body": "My Object message body with a <a href="http://play.google.com/store/apps/details?id=com.google.android.apps.maps">Hyperlink<\a>",
      "id": "message_id",
      "messageType": "textAndNotify"
    },
  

异常处理

如果尝试通知的次数超过 3 次,系统会返回 QuotaExceededException 响应。如集成步骤中所述,可以使用“TEXT”而非“TEXT_AND_NOTIFY”来设置对卡券的任何进一步更新。

附近通知

此功能会向已启用通知并向 Google 钱包应用授予精确位置信息(始终开启)访问权限的用户显示推送通知,提醒他们已保存与当前位置相关的卡券。

集成步骤

使用方法

如需使用此功能,您需要向课程和对象添加位置信息。您可以为每个类添加最多 10 个位置,为每个对象添加最多 10 个位置。在类或对象定义中使用 MerchantLocations。您可以在使用 insertpatchupdate 方法时添加这些位置。

向类或对象添加营业地点后,当用户位于附近时,Google 会向其发送通知。Google 会决定用户需要离多近以及需要在该区域停留多长时间,然后才会发送通知。Google 还会控制通知的文本内容。

设置了 MerchantLocations 的 LoyaltyClass 示例:
{
  "kind": "walletobjects#loyaltyClass",
  "programLogo": {
  "kind": "walletobjects#image",
  "sourceUri": {
    "uri":
    ...
  }
  },
  "localizedProgramName": {
    "kind": "walletobjects#localizedString",
    "defaultValue": {
      "kind": "walletobjects#translatedString",
      "language": "en",
      "value": "Program Name",
    }
  },
  "id": Id1234,
  "version": "1",
  "allowMultipleUsersPerObject": true,
  "reviewStatus": "underReview",
  "enableSmartTap": false,
  "localizedIssuerName": {
    "kind": "walletobjects#localizedString",
    "defaultValue": {
      "kind": "walletobjects#translatedString",
      "language": "en",
      "value": "Issuer Name"
    }
  },
  "multipleDevicesAndHoldersAllowedStatus": "multipleHolders",
  "merchantLocations": [
    {
      "latitude": 37.79020867928078,
      "longitude": -122.39004
    },
    {
      "latitude": 37.42587,
      "longitude": -122.08620
    },
  ]
}

预期行为

当用户位于指定的 MerchantLocation 时,应收到有关其卡券的粘性通知。 如果用户点击通知,系统会在 Google 钱包中打开相应卡券。 用户可以通过滑动操作关闭通知。当用户离开相应位置时,通知会消失。