ios - 使用 iTMSTransporter 更新应用内购买?
问题描述
我一直在检查 Apple 的iTMSTransporter,发现它将是我们在 CI/CD 管道中使用的非常有价值的工具。我查看了lookupMetadata
操作,它提供了大量有价值的信息来监控我们的应用、状态和定义的应用内购买。不过,我们希望能够做的一件事是获取该操作的输出元数据 XML,修改应用内购买详细信息,然后使用 iTMSTransporter 对其进行更新。这是受支持的选项吗?
有关更多信息,iTMSTransporter -m lookupMetadata <options>
将输出一个名为 metadata.xml 的文件,其中包含有关应用程序的详细信息。此 XML 的片段如下所示...
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://apple.com/itunes/importer" version="software5.11">
<metadata_token>1592855553024-a491289f7f79e4f8dcbdae34cf41ef4485928389987f3b4cc3323111c85b37</metadata_token>
<provider>MyCorp12345</provider>
<team_id>CQQR623213B5</team_id>
<software>
<vendor_id>com.myapp.PurchaseTest</vendor_id>
<read_only_info>
<read_only_value key="apple-id">342453443</read_only_value>
</read_only_info>
<software_metadata app_platform="ios">
<versions>
<version string="1.0">
<locales>
<locale name="en-US">
<title>PurchaseTestSN</title>
</locale>
</locales>
</version>
</versions>
<in_app_purchases>
<in_app_purchase>
<product_id>com.myapp.PurchaseTest.Consumable2</product_id>
<reference_name>Consumable2</reference_name>
<type>consumable</type>
<products>
<product>
<cleared_for_sale>true</cleared_for_sale>
<intervals>
<!--The following <interval> element represents a snapshot of present and future pricing and availability information.
In other words, past data may not be reflected by this interval.-->
<interval>
<start_date>2020-06-22</start_date>
<wholesale_price_tier>2</wholesale_price_tier>
</interval>
</intervals>
</product>
</products>
<locales>
<locale name="en-US">
<title>Consumable2</title>
<description>Consumable2</description>
</locale>
</locales>
<read_only_info>
<read_only_value key="apple-id">435324234</read_only_value>
<read_only_value key="iap-status">Waiting for Screenshot</read_only_value>
</read_only_info>
</in_app_purchase>
...
</package>
我希望能够编辑 com.myapp.PurchaseTest.Consumable2 的详细信息——例如定价或描述——并使用 iTMSTransporter 以自动方式上传这些更改。这可以使用 iTMSTransporter 吗?我还调查了 App Store Connect API,但没有看到支持该功能。有没有不同的或更好的方法来实现这一点?
解决方案
Medium上有一篇文章:
https://medium.com/@tonyspin/uploading-ios-in-app-purchase-downloadable-content-727e0d2c0531
这很好地解释了这个过程。您用于lookupMetadata
获取itmsp
捆绑包。里面有metadata.xml
.
一些附加说明:
我的流程如下:
下载包
/usr/local/itms/bin/iTMSTransporter -m lookupMetadata -u your_user -p your_appspecific_pw -vendor_id your_verndor -itc_provider your_provider -destination .
然后将下载的包重命名,修改里面的metadata.xml:
<versions>
完全删除<products>
完全删除将评论图像添加到目录中,例如
review.png
对于每个 IAP,添加元数据和图像数据以及注释:
<in_app_purchase> …all the metadata… <review_screenshot> <size>724661</size> <file_name>review.png</file_name> <checksum type="md5">34c788f999e81349f9a05342c3ccf144</checksum> </review_screenshot> <review_notes>Additional discounts</review_notes> </in_app_purchase>
验证:
/usr/local/itms/bin/iTMSTransporter -m verify -u your_user -p your_appspecific_pw -vendor_id your_verndor -itc_provider your_provider -f your_modified_package.itmsp
最后上传
/usr/local/itms/bin/iTMSTransporter -m upload -u your_user -p your_appspecific_pw -vendor_id your_verndor -itc_provider your_provider -f your_modified_package.itmsp
这将覆盖您在 IAP 中已有的内容,所以要小心。上传的数据不会立即出现,但大约 30 分钟或更长时间后,请耐心等待。
推荐阅读
- sql - 使用范围内的日期来连接和显示所有日期?
- formula - DAX - 使用过滤器进行总结
- uuid - 我的 MAC 地址与远程生成的版本 1 UUID 中的 MAC 值不匹配
- javascript - Owl carousel 2 导航控件被隐藏和禁用
- javascript - 尝试在 React 中进行排序和切片时,如何保留整个 geojson?
- mysql - Case语句中的MySQL AND语句?
- android - 暂停和恢复用于下载文件的协程
- python - Jupyter Notebook 在 Anaconda Prompt for Qiskit 中的命令失败
- javascript - 转义文本以保存在 Postgres 中
- html - 响应式网格项目中的问题