iOS开发内购教程In App Purchase 需要了解的

-我要在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时就不走IAP了。

创建产品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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 141,621评论 1 298
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 60,780评论 1 254
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 93,376评论 0 211
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 40,770评论 0 174
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 48,482评论 1 252
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,637评论 1 172
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,297评论 2 267
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,094评论 0 165
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 28,855评论 6 228
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,420评论 0 213
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,200评论 2 213
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,521评论 1 224
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,181评论 0 31
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,065评论 2 213
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,424评论 3 202
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,590评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 25,947评论 0 163
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,406评论 2 230
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,509评论 2 229

推荐阅读更多精彩内容