• In App Purchase无敌攻略


    转载自:http://blog.liuhongwei.cn/iphone/in-app-purchase_tips/

    前些天想把内容拆开买,apple却不允许了,而是推荐使用In App Purchase把内容组合到一起。

    找到一个超详细的In App Purchase攻略

    http://troybrant.net/blog/2010/01/in-app-purchases-a-full-walkthrough/

    苹果官方的IAP编程指南也可以参考。

    做了个例子程序,可以明确的是:

    app必须使用非通配符的ID。本来有几个程序是使用通配符的App ID,试了一下,不是返回invalid purchase,就是返回SKError:  Cannot connect to iTunes Stor。申请了一个新的唯一App ID,然后用于测试app,再申请一个IAP的product id,一切正常了。

    测试中还看到device console中的一条错误信息,iTouch中的浏览器直接访问没问题,原因不明,网上也查不到,设置了一个代理服务器就不显示该错误信息了。后来又测试了一下,发现该消息不准确,取消代理服务器后,使用正确app id的app发送正确product id,一切正常。

    Fri Jul 30 11:18:49 iPod-touch /System/Library/PrivateFrameworks/iTunesStore.framework/Support/itunesstored[4180] <Error>: URL: http://sandbox.itunes.apple.com/bag.xml?ix=2> Heuristics Failed, NOT PIPELINING

    某product买了以后再买non-consumable的product,iTune会自动弹出消息,告知用户已经买过了但没下载,可以点击确定下载,点击确定后,iTune会给程序一个transaction complete的消息,然后界面会自动弹出消息,购买成功。所谓的下载应该指的是再次返回一个transaction complete消息,让app有机会处理购买成功。可见

    • iTunes会记录每个用户购买了哪些IAP product
    • 购买过还可以再次购买non-consumable的product,但iTunes不会重复扣钱,却仍会返回成功消息。

    例子和教程上,正常的IAP流程是,发送product id列表,接受所有有效product列表;然后,用户购买某个product。但是,经过测试,用户可以省略发送接收有效product列表这个步骤,直接购买某个product,当然这样会有些风险,比如product被苹果移除了,但是正常情况下问题不大。


  • 相关阅读:
    Codeforces
    Codeforces
    SCUT
    模板
    SCUT
    SCUT
    模板
    SCUT
    UVA 437 "The Tower of Babylon" (DAG上的动态规划)
    UVA 1025 "A Spy in the Metro " (DAG上的动态规划?? or 背包问题??)
  • 原文地址:https://www.cnblogs.com/java20130723/p/3212091.html
Copyright © 2020-2023  润新知