合作伙伴触发的通知
添加消息和通知
背景
用户添加卡券后,您可能需要向其发送与该卡券相关的消息,并确保用户收到通知。使用 Add Message API 请求,并将 message_type
设置为等于 TEXT_AND_NOTIFY
时,会发生以下情况:
- 系统会在“卡券背面”(即详情模板)中添加“消息”项,并向已保存卡券的用户发送推送通知。
- 用户点按通知后,系统会将 Google 钱包打开到卡券的前端(即卡片视图),用户会在屏幕顶部看到一个带有“查看消息”按钮的标注。
- 点击此标注后,用户会前往卡券背面,其中会突出显示新的未读消息。
向用户发送带有通知的消息时的一些注意事项
- 用户必须为卡券启用通知功能,才能接收与消息相关的推送通知。
- 消息可能包含指向您的网站或应用的 URI。超链接必须指向与卡券相关的网站或应用。如果引导用户访问与通行卡无关的链接,则违反了《使用政策》。
- 您在 24 小时内最多可以发送 3 条会触发推送通知的消息。如果 Google 认为您在向用户发送垃圾信息,可能会限制您的推送通知传送配额。
- 用户在锁定屏幕上看到的推送通知由 Google 钱包控制。
- 您可以使用常规类或对象端点,通过 UPDATE 或 PATCH 方法修改或移除消息数据。
集成步骤
如果您想在通过 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
。您可以在使用 insert
、patch
或 update
方法时添加这些位置。
向类或对象添加营业地点后,当用户位于附近时,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 钱包中打开相应卡券。 用户可以通过滑动操作关闭通知。当用户离开相应位置时,通知会消失。