我要在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新特性”涵盖了多个重要的话题,旨在帮助开发者更好地理解和利用MySQL的新功能来优化他们的应用。以下是根据PPTX文件名推测的一些关键知识点: 1. **InnoDB存储引擎增强**: ...
描述软件可用性基础知识,使软件开发者对软件可用性有个初步了解
货币化是所有开发者都关心的问题,即如何通过应用程序获得收益。在这一点上,亚马逊应用商店提供了“默认全球销售”的选项,这意味着开发者的作品可以在亚马逊的全球平台上销售,而无需额外设置。此外,开发者还可以...
CloudFoundry最初是由VMware公司发起并推动的,其目标是为了简化应用程序的开发、测试、部署及扩展过程,从而帮助开发者更加专注于业务逻辑而无需过多关心底层的基础设施。 CloudFoundry支持多种语言和框架,例如...
它将业务逻辑、表示层和控制逻辑分离,使得开发者可以更专注于业务处理,而不用过于关心页面展示和控制流程。Struts提供了ActionForm、Struts-config.xml配置文件以及标签库等功能,帮助开发者实现高效、可维护的Web...
Java日志分析框架是开发过程中不可或缺的工具,它简化了对日志数据的处理和解析,使得开发者可以更专注于业务逻辑而不是底层实现。基于Java的日志分析框架通常提供高效的读取、过滤、解析和统计日志信息的功能,帮助...
### oSIP开发者手册知识点概览 #### 第一章 SIP协议 **SIP协议的特点:** - **媒体独立性:** SIP协议的设计...对于那些希望深入了解SIP协议及其在实际应用中的实现细节的开发者来说,这份手册无疑是一个宝贵的资源。
对于开发者来说,掌握ONVIF协议意味着能够开发出与众多设备兼容的监控系统,而无需关心具体的硬件细节。开发者可以从ONVIF提供的中文协议文档中学习如何创建符合标准的客户端和服务端应用程序,如何进行设备的搜索、...
它们通过提供丰富的功能和强大的集成,使开发者能够专注于编写高质量的前端代码,而无需关心琐碎的工具配置和调试细节。在选择和学习这类工具时,了解其核心特性和如何最大化利用这些特性,是每个前端开发者必备的...
Hibernate则是Java世界中最流行的ORM框架之一,它允许开发者用Java对象来操作数据库,而无需关心底层SQL语句。通过注解或XML配置,Hibernate能自动将对象与数据库表对应,实现了数据的透明化访问。它还支持 Criteria...
Android巴士作为一个技术社区,通常会关注开发者关心的实际问题和前沿技术,因此,这些PPT可能会包含如何提升应用程序性能、如何适应不同设备的适配策略、如何利用Android Studio的最新功能进行高效开发等主题。...
oSIP开发者手册是一份详尽的指南,专为那些希望使用oSIP库开发SIP(Session Initiation Protocol)应用程序的程序员准备。SIP是一种应用层的信令协议,主要用于建立、修改和结束多参与者之间的多媒体会话,如互联网...
PaaS是一种云计算服务模式,它提供了一种便捷的方式,让开发者能够专注于应用程序的开发,而无需关心底层硬件和操作系统的管理。在Java领域,PaaS平台的出现极大地降低了开发和运维的成本,提高了应用程序的可伸缩性...
无空格的TXT文件同样适用于各种文本处理任务,尤其适合那些需要处理大量汉字而不关心单字间隔的场景,比如统计词频、构建词库或训练自然语言处理模型。 这些文件对于开发者来说是宝贵的资源,可以用于各种用途,如...
这些API使得开发者无需关心浏览器之间的差异,提高代码的可读性和兼容性。 3. **事件处理**:jQuery统一了事件绑定和解绑的接口,`$(selector).on('event', handler)` 可以绑定事件,`$(selector).off('event', ...
作为一款安卓库,SelfAdjointView注重兼容性和易用性,支持广泛的Android版本,使得开发者无需关心底层实现,只需简单调用API即可快速实现滑动内联动效。此外,库的文档通常会详细解释如何集成和使用,帮助开发者...
代码折叠功能允许开发者隐藏不关心的代码块,专注于当前的工作区域。快捷键自定义则可以根据个人习惯设置,提高操作速度。 总的来说,"VC小助手"是VC++开发环境中的得力伙伴,它通过智能感知、高亮显示等多种方式,...
2. **响应式布局**:bui-weex支持响应式布局,自动适配不同屏幕尺寸的设备,使得开发者无需关心不同设备的适配问题。 3. **易于使用**:bui-weex提供了简洁明了的API接口和文档,使得开发者可以快速上手,减少学习...