我要在app里添加IAP,必须要注册自己的产品标识符(product identifiers)。产品标识符是什么?
产品标识符(Product Identifiers)是一串字符串,它用来识别你在应用内贩卖的每件商品。App Store用产品标识符来检索产品信息,标识符只能包含大小写字母(A-Z)、数字(0-9)、下划线(-)、以及圆点(.)。你可以任意排列这些元素,但我们建议你创建标识符时使用反向域名,比如 com.companyname.application.productid
备注:产品标识符和Apple ID以及Bundle ID没有关系,它们看起来可能比较像Bundle ID,但是两者是不一样的。所以,在代码里你不能用Apple ID或者Bundle ID代替产品标识符。
怎么创建产品标识符?
IAP表单(TheIn-App Purchases form)是用来生成IAP产品的,它包含了产品ID的字段,这个字段必须要填到表里。这个字段可以为你的产品指定产品标识符。你可以按下面的步骤来创建产品标识符:
1.登入iTunes Connect, 点击主页面上的Manage Your Applications模块。
2.进入Manage Your Apps 页面,你可以看到你所有的应用列表。选择你想要创建IAP的产品的app,在下个页面中点击Manage In-App Purchases按键,然后在点击创建。
3.选择IAP产品的类型。iTunes Connect会带你进入IAP表单,在这个表单里有“保存”按键。完整填写Product ID以及表单里的其他字段。
注意事项:产品标识符一旦创建无法修改,此外,如果应用审核没有通过,这个产品标识符也无法再次使用。
如何在app中如何使用产品标识符?
首先创建SKProductsRequest,然后把产品标识符列表传至initWithProductIdentifiers 来读取产品信息。
当在Sandbox 环境测试In-App Purchase 时,为什么我得到的是“Payment requests are restricted to products returned as valid via Store Kit's didReceiveResponse method”错误信息?
执行In-App Purchase的app的用户界面必须有App Store允许的可供购买的产品。在你决定在用户界面展示用于购买的产品之前,你的app必须先向App Store发送一个产品请求。
StoreKit提供了两种支付支付请求的解决办法:
[SKPayment paymentWithProductIdentifier:PRODUCT_ID] [SKPayment paymentWithProduct:YOUR_SKPRODUCT_OBJECT] 苹果建议您使用 [SKPayment paymentWithProduct:YOUR_SKPRODUCT_OBJECT] 使用这个方法可以确保你一直处于有效的产品支付请求状态,同时也确保用户可以购买你的产品。 所以,务必只展现App Store返回的产品信息。了解更多有关于app内产品展现信息,请查看In-App Purchase 编程指南的Feature Delivery 部分。
In-App Purchase有几种类型?
In-App Purchase共有3中类型,Consumable:一次性购买,最简单的类型,不用保存历史记录。 Nonconsumable:每个产品,用户只买一次,此后就可以在自己的所有设备上看到该产品。 Subscriptions:订阅模式允许多次购买末一个产品,但是购买后,用户可以在自己的所有设备上看到该产品。
iOS 中使用 IAP 方式在程序内购买的内容在重装系统后还需要再次购买吗? 比如Camera+内的滤镜。
不必。以 Camera+ 为例,Menu 里最下方的选项 Restore purchases 即可帮你解锁已经购买的滤镜。任何实现了 IAP 功能的 App 基本都会提供这一选项,或者在第二次购买时提示已购。
消耗类(如游戏金币)需要购买。 功能类不需要购买,有些应用提供“Restore purchases”,没有的可以再次尝试购买,会提示已付费。
IAP 能做限时免费吗? 想做一个免费下载、部分内容免费,但是阅读更多内容需要付费解锁的阅读应用。这样可以把IAP的价格限时免费为0吗?
你可以设置为0.99美元
创建产品ID的时候,选择多少钱的时候选错了,程序还未提交,还能修改吗?
可以的,在应用程序的信息中。
升级iOS5 GM的过程中恢复备份出了问题,导致In-App Purchase也丢失了。有没有办法恢复? 在iPad上曾经进行过一些In-App Purchase,但是在升级iOS5 GM的过程中恢复备份出了问题,导致除了恢复升级前的所有应用程序之外,其余个人信息一概丢失。iTunes上可以查询到购买记录。具体来说,买的是Splashtop的把iPad作为第二显示器的软件,Xdisplay。
In-App Purchase 分好几种,最常见的是 Non-Consumable,就是只需要用户购买一次的。如果是这种类型的,再购买一次同一个商品就能够恢复了,不会收取额外费用。如果 app 做得好的话,应该提供一个 Restore 功能,以专门恢复以前购买过的 Non-Consumable 的商品。
在iTunes Connect中每个应用可以创建多少个IAP产品ID?
请参阅iTunes Connect Developer Guide的注册IAP部分
在iTunes Connect里找不到Manage In-App Purchase (管理IAP)按键怎么办?
以下是可能导致“Manage In-App Purchase”按键无法使用的原因
a.不是iTunes Connnect的管理员(Admin)或开发者(Technical)账号。
b.没有同意最新的iOS或Mac开发者许可协议。
c.最新的付费应用协议(Paid Applications contract)没有生效
必须上传程序的二进制码才能测试IAP吗?
没有这个必要。
重要事项:除非你的应用已经做好了接受苹果审核的准备,否则请不要上传Development Binary至iTunes Connect。如果iTunes Connect里的二进制编码不完整,二进制编码被拒的可能性很大。一旦二进制编码通过审核,就可以测试In-App Purchase功能了。
出现了“您的账号信息已变”错误怎么办?
“您的账号信息已变”错误出现的原因是在测试IAP的时候你使用的是设备的测试账号。解决方法是退出账号,然后在iTunes Connect创建一个新的测试账号,使用新的测试账号来测试IAP。
为什么我的产品标识符在invalidProductIdentifiers中被退返?
有可能是以下原因:
a.没有填完财政需求表(请参阅本文档的“合同、税务以及银行信息”部分)
b.没有使用正确的App ID。
c.没有使用正确的与App ID紧密关联的Provisioning Profile。
d.代码中没有使用正确的产品标识符。更多产品标识符的信息请参阅技术问答,第1329条—IAP产品标识符。
e.你没有清除iTunes Connect中促销的IAP产品。
f.也许你已经修改了你的产品,但它没有在App Store的服务器中生效。
g.苹果拒绝了你最新向iTunes Connect提交的二进制码。
出现了“你已购买本商品,但商品没有被下载”错误怎么办?
你的应用没有调用SKPaymentQueue 's finishTransaction。调用finishTransaction:允许你从支付队列中移除交易。
出现“你已成功购买,点击‘确认’再次进行免费下载”错误怎么办?
这个信息是个提醒,不是错误。这表明你试图购买一个你已经购买了的非消耗性产品。购买一个非消耗性的产品时不会被扣费。
调用 payment queue的 restoreCompletedTransactions: 方法不能恢复app的任何产品。
可能由于以下原因:
你没有任何先前购买过的非消耗类产品。
你试图恢复的订阅产品或者非消耗类产品是不可恢复的类型。
restoreCompletedTransactions: 方法只能恢复非消耗类产品。
注意: 在没有可恢复产品的情况下,Store Kit不会调用paymentQueue:updatedTransactions:方法。
应该什么时候恢复In-App Purchase产品?
在以下两种情况下你可以恢复自动更新的订阅产品和非消耗类产品:
a.在客户其他设备上安装
b.在删除了关联应用的其他设备上重新安装
如何解决“这不是测试用的用户账号,请在Sandbox环境下创建一个新的账号”的问题?
出现这个错误的原因是在确认购买信息时你使用的是iTunes用户账号。解决的办法是退出账号,然后使用你的IAP测试账号。
回单(receipt )核实失败,并且出现字符串 (iOS)。
可能有以下几个原因:
a.在你的iOS app里,你没有使用64位编码对回单数据进行编码,
b.没有有效的回单,你的回单大概使用了等号隔开键和值,用分号隔开了关键字。
c.有效的回单使用冒号来隔开键和值,用逗号隔开关键字,
下表是有效的回单样本
receipt: { "signature" : "...", "purchase-info" : "...", "pod" : "...", "signing-status" : "..." }
我更新了使用In-App Purchase的iOS app,如何对它进行测试呢(iOS)?
不管更新后的app是否正确执行地了In-App Purchase,如果你要测试的话就按照以下步骤:
通过Ad Hoc Distribution方式安装原始app。
通过Ad Hoc Distribution方式安装更新后的app来验证它是否完全覆盖了原始的app。
试着从更新后的app中执行In-App Purchase。
我应该使用哪个url核实回单(receipt)(iOS)?
在sandbox环境测试app时使用 sandbox URL ,当应用处于审核状态时也可以使用这个URL:https://sandbox.itunes.apple.com/verifyReceipt 使用产品 URL 一旦你的app上架App Store,你就要用产品URL: http://buy.itunes.apple.com/verifyReceipt
如何核实receipt(iOS)?
第一次一般使用产品的URL核实收据。如果你收到一个21007状态代码,那么接下来要用sandbox URL。当app处于测试状态或者在sandbox环境下进行检测,或者上架App Store,你可以使用这种方法,从而避免在URL之间进行切换,
注明:21007 状态码表明receipt是一个sandbox receipt。
分享到:
相关推荐
开发者关心的MySQL新特性-吴炳锡-final
开发者关心的MySQL新特性-吴炳锡-final.pptx
描述软件可用性基础知识,使软件开发者对软件可用性有个初步了解
一个基于Java的Log分析框架,开发者只需要关心针对每一条log的具体业务,不必关心文件指针或者是IO细节
移动云OpenAPI平台的C++ SDK,可以让C++开发者无需关心API请求细节即可快速使用弹性云服务器、虚拟私有云等多个移动云服务。
而在学习完本专栏之后,相信你也应该能够明白,53 | 结束语 | Kubernetes:赢开发者赢天下云计算平台上的开发者们所关心的,并不是调度,也不是资源管理
Php开发者实践,epub格式,可以在手机上阅读。因为关于如何使用 PHP 语言本身相关资料已有很多,本文将尽量不涉及 PHP 语言本身、且优先引用已有资料,主要围绕关心 PHP 项目开发技巧和具体实践,通过相关工具和经验...
币圈主要是炒币者和矿工,最关心的是币价的涨跌,至于技术是否优秀,有没有长期发力的可能这些都属于决策依据的一种,并不是最核心的。 链圈是各种公链和联盟链的开发者,联盟链的开发者一般都是基于ToB的场景工作,...
应用运行所需的服务器和环境可以皆由云端平台提供,开发者只需关注应用的业务逻辑,而无需关心基础设施 华为云开发服务框架 常见的云服务 - 认证服务:助力应用快速构建安全可靠的用户认证系统。 - 云函数: 提供...
首先,它使得 JPA 配置变得更加灵活。...并由其统一管理,开发者不需要关心这些,如前面的代码所示,业务方法中只剩下操作领域对象的代码,事务管理和 EntityManager 创建、销毁的代码都不再需要开发者关心了。
CIM是一套基于netty框架下的推送系统,或许有一些企业有着自己一套即时通讯系统的需求,那么CIM为您提供了一个解决方案,目前CIM支持websocket,android,ios,桌面应用,系统应用等多端接入支持,可应用于移动应用,...
errorCode.php, pkcs7Encoder.php, sha1.php, xmlparse.php文件是实现这个类的辅助类,开发者无须关心其具体实现。 2.WXBizMsgCrypt类封装了VerifyURL, DecryptMsg, EncryptMsg三个接口,分别用于开发者验证回调url...
非常实用,都是BPEL开发者关心的问题,需要有一定的BPEL基础。
errorCode.php, pkcs7Encoder.php, sha1.php, xmlparse.php文件是实现这个类的辅助类,开发者无须关心其具体实现。 2.WXBizMsgCrypt类封装了 DecryptMsg, EncryptMsg两个接口,分别用于开发者解密以及开发者回复消息...
无前端Headless指的是GeekShop框架专注于实现,它不关心特定前端界面的实现方式。GeekShop主要是面向开发者的。GeekShop暴露了基于GraphQL的电商API,通过这些API,开发者可以查询(query)数据,例如查询商品数据,...
是映射本地端口2222到设备的22端口piaoyunsoft14页10行开发者关心的只有沙盒里面的Document、Library、tmp等。开发者关心的只有沙盒里面的Documents、Library、tmp等。少了个spcccccc41页CocosPodCocoaPods单词写错...
Easy-ES介绍 ...全自动索引托管: 全球开源首创的索引托管模式,开发者无需关心索引的创建更新及数据迁移等繁琐步骤,索引全生命周期皆可托管给框架,由框架自动完成,过程零停机,用户无感知,彻底解放开发者
Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails 应用程序要快。 Rails::API 可以用来创建只提供API服务(API-Only)的 Rails ...
jdk17 不仅是提供了开发者关心的一些编程语言功能,与旧版本的 JDK 相比,性能也得到了很大的提升。性能的提升主要得益于 JVM 中引入的新功能和改进,特别是 GC 方面的提升。
正在看的ORACLE教程是:基于Oracle的面向对象技术入门基础简析开发者网络Oracle。一、概述 对象是Oracle8i以上版本中的一个新的特性,对象实际是对一组数据和操作的封装,对象的抽象就是类。在面向对象技术中,对象...