标签:des style http color 使用 os io strong
附:本文来自IOS6-Tutorias的翻译,本做笔记之用,故语言简练。 一,可用的IAP类型: Non-Consumable:用户只需购买一次,不需要再次购买,即可在多台设备上拥有之(restore技术)。 Consumable:用户可以购买多次(不限定次数)。例如金币。 Auto-Renewable Subscriptions:为了收到app更新的内容,用户需要定期支付款项。(目前仅适用于杂志或者新闻类型的app)。 Free Subscriptions:类似于Auto-Renewable Subscriptions类型,但免费,仅适用于杂志类型的app。 Non-Renewing Subscriptions:假如你可用Auto-Renewable(你的app不属于杂志或者新闻类型),但是你仍想提供基于时间限制的访问内容,可以选择Non-Renewing来试试。比如你想仅允许用户一周的时间去访问某个特殊的功能,逾期则否。 二,在apple上注册IAP: 在你的app中提供iap产品之前,你需要让apple知道这个产品,即需要将其注册在iTunesConnect上。 流程很简单,稍后你将亲自实践。目前,你需要了解iTunesConnect上的信息: ? 上图展示了你预填写的product ID,该字串可以认为是一个IAP产品的唯一标示,其价格亦然。 上图展示了你的IAP产品的展示信息(本地化名称和描述)。 现在你已经完成了IAP的注册。 三,在app中实现IAP: 总共有7个步骤来实现IAP。 1,加载产品identifiers:在开始购买之前,app需要知道你在iTunesConnect中注册的IAP产品的produnct identifiers。(该列表可以硬编码到你的app中,也可以从本地服务器那获取)。 NSSet* productIdentifiers = [NSSetsetWithObjects:@"com.razeware.hangman.tenhints",@"com.razeware.hangman.hundredhints",nil]; 2,请求Product 信息:接下来,app将链接AppStore获取产品详细信息。在delegate callback中获取到产品信息,并存贮在SKProduct对象中。 _productsRequest= [[SKProductsRequestalloc]initWithProductIdentifiers:productIdentifiers]; _productsRequest.delegate= self;[_productsRequeststart]; 3,呈现产品(Present the store):接下来在app中呈现可用的products列表。apple没有提供现成的VC去展示lists,你需要自己创建,因为此,可以做出差异化的购买界面。 例如下图: 4,触发购买请求:当用户选择一个IAP产品条目时,购买请求API将被触发,之后会自动弹出信息,形如‘你确定购买**产品吗?’ SKPayment* payment = [SKPaymentpaymentWithProduct:skProduct]; [[SKPaymentQueuedefaultQueue]addPayment:payment]; 5,交易进程:IAP产品API将要求用户支付对应费用,并监听交易成功与否的信息。此时,你可以选择通过向apple servers验证该购买是否有效。 (在app新启动时,也将会注册接受交易成功与否的通知。) - (void)paymentQueue:(SKPaymentQueue*)queueupdatedTransactions:(NSArray*)transactions { for(SKPaymentTransaction* transaction intransactions) { switch(transaction.transactionState){ caseSKPaymentTransactionStatePurchased: [selfcompleteTransaction:transaction]; break; caseSKPaymentTransactionStateFailed: [selffailedTransaction:transaction]; break; caseSKPaymentTransactionStateRestored: [selfrestoreTransaction:transaction]; break; default: break; } } } 6,开放购买内容(unlock the content):这是很关键的步骤,你的app此时应当将购买的内容呈现给用户(即某项功能对用户可用)。 7,接受本次交易:最后一步,请求IAP的API,告知本次交易接受。 否则app将认为该交易没有结束,并在下次启动app时,再次提交该交易请求。 [[SKPaymentQueuedefaultQueue]finishTransaction: transaction]; ------------------------------------ 实例: 接下来,将开始一个简单的游戏项目,用来展示IAP购买。 找到本章资源,解压HangmanCh9Starter项目,打开并运行之。 你可能曾经玩过这个游戏。你的目标是猜测屏幕底部的单词,点击label弹出键盘,并键入你认为对的字母。 加入你是对的,字母将会显示,反之你的hangman将会被吊起来(没玩过)。假如错误达到一定次数,hangman即死亡。很怪异的游戏,不是吗? 试着能不能搞定这个游戏,假如你思维卡住,你可以点击hint按钮来获取一个字母的提示,但是你只有20次的机会。 运行下该app的各个地方,你会看到有个setting界面,你可以在里面设置app。 在右上角有个‘store’按钮,点击进去,里面是空的,点击restore按钮,将呈现一个新的界面即‘store details’界面。这便是接下来的主要任务。 玩成了本任务的项目,用户将会获取更多的单词库,更多的提示来避免hangman死翘翘。(当然对你来讲,你知道最真实的原因:mooooney)。 添加IAP到hangmanapp中:1,允许用户购买额外的hint。2,解锁更多的单词库。 现有代码初探: 略。 HMStoreListViewController.m和HMStoreDetailViewController.m目前几乎是空的,这是本章节要完善的内容。 设计思考: 在写IAP相关代码前还有一件事需要讨论。 有2件事已经使IAP简单化: 在这部分,我们讲讨论下述2点使IAP简单的原因,或许你会发现一些有用的技术可以借鉴。 1,主题和单词库已经被设计为基于文件化的。 如果你打算购买一个新的theme,只需要建一个StickmanTheme实例,返回相应的图片和声音元素即可。不需要写新的代码。 代码越多,bug出现几率越大。 你无法在IAP购买时下载代码。所以增加新内容时你不得不发布新的版本。 2,每个主题和单词库以其私有字典被保存。 假如你清楚的知道主题和单词库被存放在具体的私有字典中,这将使效果实现更容易。 比如,你想要更改到某个theme,你只要代入字典的URL,即可获取相应的theme。 这也使得增加主题成为可能,写入文件即可。 注:此时文件是以文件夹的形式存贮在项目中。 作用:当文件被赋值到app的bundle中时,他们将原封不动的赋值文件下的路径和文件。 开工: 添加IAP产品到项目(theme,words,hints): 前提: 拥有ios developer Program账号; 确定你已同意iTunes Connect中最新的IOS Developer Program Lisence Agreement; 确定你已经完成在iTunes Connect中ios Paid Applications Contract。 1,登陆IOS Provisioning Portal,点击‘App IDs‘选项,如下图示: 点击’New App ID‘,将出现新建app ID的界面: bundle identifier基于你管理的域名(或者以项目名称即可),例如:com.mypro.pro。 注意:App ID不能包含通配符,IAP仅支持明确的App IDs。 登陆iTunes Connect ,点击’Manage Your Applications‘,->’Add New App‘,并选择IOS App类型,创建一个基于上述App ID 的app。 注意:此时你的app name应当和我的不一样,app name是唯一的,并且我已经创建了该app。 点击继续,接下来的2页将会要求你填写关于该app的详细信息,现在可以暂时以占位字母替代,因为你这些信息稍后是可以修改的。为了创建的app可用,你不得不填写所有的信息,包括icon和screenshot(图片大小有严格的要求)。 完成app创建,图示: 点击右上角的’Manage In-App Purchase‘,然后点击’Create New‘,将出现创建IAP产品的界面: 选择IAP 的类型,此处的hint购买,不限制用户购买的次数的,故用’Consumable‘类型。 现在拟提供2种hint产品,一个提供10hints,一个100hints。 10个hints创建: 注:对于Product ID,你应用你自己的反转DNS标示法,比如:com.mypro.pro.tenhins 在页面底部,显示In-App Purchase Detaile\lauguage部分,点击’Add Lunguage‘,填写信息,并点击保存之。滚到页面底部,再次保存页面。一个10hints的IAP产品注册成功。 100hints 的IAP产品创建: 类似10hits的,此处翻译略。 你已经完成了在iTunesConnect上的工作,结束进程前,你需要确定的是项目的bundle Identifier是正确的。 (折回项目中,点击info-plist文件,找到’Bundle Identifier‘,设置与上述对应的AppId值: 完成修改之后,为了避免Xcode使用旧的bundle Id,可以操作如下: 1,点击Product\Clean in Xcode。 2,删除在device或者在simulator中的app。 3,重启Xode,simulator和device。 4,运行之。 最后一项,调用IAP的API,你需要在项目中添加 StoreKit framework。 基于上述操作,已经完成在iTunes Connect中注册IAP产品;项目可用IAP。 接下来,将是代码的东东了。 ------------------------ 获取Products: 加载产品product identifiers并请求product 信息。 讲所有这部分代码放在一个helper的类中,方便IAP代码的集中化管理。 创建新的Group,命名为’IAP‘。 在IAP文件夹下创建NSObject子类文件,命名为“IAPHelper”。 在IAPHelper.h中: @interfaceIAPHelper : NSObject - (void)requestProductsWithProductIdentifiers: (NSSet*)productIdentifiers;@end 上述书写的方法,将用于向appstore请求IAP产品信息(produce identifires集合)。 在IAPHelper.m中: // 1 #import"IAPHelper.h" #import标签:des style http color 使用 os io strong
原文地址:http://www.cnblogs.com/yunis/p/3921233.html