React Native Expo集成Google Wallet:添加卡片可见字段问题
解决Google Wallet通用卡片表面显示额外字段的问题
你遇到的核心问题是字段路径语法错误,导致无法将textModulesData中的内容映射到卡片表面。以下是具体修改方案:
1. 修正字段路径(fieldPath)
Google Wallet的字段路径需要通过id('xxx')定位textModulesData数组中对应id的元素,而非直接用键名。修改genericClasses中的cardRowTemplateInfos部分:
{ iss: 'xxxx@xxxx.iam.gserviceaccount.com', typ: 'savetowallet', aud: 'google', origins: [], payload: { genericClasses: [ { id: 'issuer-id.className', classTemplateInfo: { cardTemplateOverride: { cardRowTemplateInfos: [ { twoItems: { startItem: { firstValue: { // 显示Company的内容 fields: [{ fieldPath: "object.textModulesData.id('company').body" }], // 添加行标题 label: { defaultValue: { language: 'en-GB', value: 'Company' } } }, }, endItem: { firstValue: { // 显示Job Title的内容 fields: [{ fieldPath: "object.textModulesData.id('job').body" }], // 添加行标题 label: { defaultValue: { language: 'en-GB', value: 'Job Title' } } }, }, }, }, ], }, }, }, ], genericObjects: [genericPass], }, };
2. 关键说明
- 字段路径语法:
object.textModulesData.id('company').body表示定位到genericObject中textModulesData数组里id为company的元素,取其body值作为显示内容。如果需要显示header,将.body替换为.header即可。 - 行标题(label):必须显式配置
label,否则卡片表面只会显示内容,没有对应的标题文本。 - 模板绑定:卡片表面的布局模板是和
genericClass绑定的,所有属于该class的genericObject都会应用这个模板配置。
3. 可选优化
将genericPass中的genericType从GENERIC_WALLET_UNSPECIFIED改为更具体的类型(比如GENERIC_TYPE_PROFILE),可以让Google Wallet自动适配更贴合场景的默认样式,但这不是必须的。
内容的提问来源于stack exchange,提问作者user21851581
相关产品推荐
相关产品推荐

