我有一个恢复按钮。问题是,如果他们没有进行恢复,并且他们尝试购买某件元素,而他们已经购买了该元素,我需要告诉他们他们已经购买了它并且不执行购买。所以我需要一种方法来知道他们购买了哪些项目,而无需进行恢复。每当用户尝试购买时,我都会先尝试进行恢复,但苹果拒绝了我的应用程序。他们说在显示“确认应用程序内购买”对话框之前无法进行恢复。
请帮我找到正确的方法。
提前致谢。
最佳答案
您可以将这些数据保存在 NSUserDefaults 中.而且您不需要显示一个提示,说明商品已购买。如果它是非消费品,苹果会显示警告说他们已经购买了该商品!
编辑:
1) 您需要在 View 中添加 3 个按钮
如果您的应用支持应用内购买,则需要为用户提供恢复选项。否则 Apple 将拒绝您的应用。
2) 如果用户按下购买按钮,请不要检查用户是否已经购买了您的应用。因为 Apple 不会为同一种非消耗品向用户收取两次费用。因此,只需浏览您的购买代码,如果用户已经购买了它,Apple 的 StoreKit 框架将调用它的委托(delegate)方法
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
与
SKPaymentTransactionStatePurchased
交易状态。这样您就可以向他展示登录屏幕。
3) 如果用户按下恢复按钮,只需使用您的恢复代码即可
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
和第二步一样,它将调用具有相同事务状态的委托(delegate)方法。因此,您可以向用户显示登录页面。
4) 如果用户按下演示版按钮,向他展示演示版。
5) 如果用户购买了您的应用程序,删除了它,如果他重新安装了它,则将他视为新用户。向他展示这 3 个按钮,用户可以恢复购买,然后您可以向他展示登录页面。
6) 如果您确实需要跟踪该应用程序是否是在确切的设备上购买的,那么您可以使用钥匙串(keychain)来存储您的数据,因为即使应用程序被卸载或删除,钥匙串(keychain)项目也不会被删除。这个 API 会有很大帮助 link , 看看
或
可以引用苹果的documentation关于钥匙串(keychain)数据
关于iphone - Apple 因恢复 IAP 而拒绝了我的 App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16398641/
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
当我在我的Rails应用程序根目录中运行rakedoc:app时,API文档是使用/doc/README_FOR_APP作为主页生成的。我想向该文件添加.rdoc扩展名,以便它在GitHub上正确呈现。更好的是,我想将它移动到应用程序根目录(/README.rdoc)。有没有办法通过修改包含的rake/rdoctask任务在我的Rakefile中执行此操作?是否有某个地方可以查找可以修改的主页文件的名称?还是我必须编写一个新的Rake任务?额外的问题:Rails应用程序的两个单独文件/README和/doc/README_FOR_APP背后的逻辑是什么?为什么不只有一个?
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
我正在使用Postgres.app在OSX(10.8.3)上。我已经修改了我的PATH,以便应用程序的bin文件夹位于所有其他文件夹之前。Rammy:~phrogz$whichpg_config/Applications/Postgres.app/Contents/MacOS/bin/pg_config我已经安装了rvm并且可以毫无错误地安装pggem,但是当我需要它时我得到一个错误:Rammy:~phrogz$gem-v1.8.25Rammy:~phrogz$geminstallpgFetching:pg-0.15.1.gem(100%)Buildingnativeextension
我正在开发我的第一个Rubygem,并捆绑了cucumber、rspec和shoulda-matches进行测试。当我运行rspec时,出现以下错误:/app/my_gem/spec/spec_helper.rb:6:in`':undefinedmethod`configure'forShoulda::Matchers:Module(NoMethodError)这是我的gem规范:#my_gem.gemspec...Gem::Specification.newdo|spec|......spec.add_development_dependency"activemodel"spec.a
大家好,我正在尝试设置一个开发环境,并且我一直在关注以下教程:Linktotutorial我做得不是很好,除了最基本的版本控制内容外,我对终端命令没有任何实际经验。我点击了第一个链接并尝试运行source~/.bash_profile我得到了错误;mkdir:/usr/local/rbenv/shims:权限被拒绝mkdir:/usr/local/rbenv/versions:权限被拒绝现在每次我加载终端时都会出现错误。bash_profile的内容;exportPATH=/usr/local/rbenv/bin:$PATHexportRBENV_ROOT=/usr/local/rbe
我正在使用Heroku(heroku.com)来部署我的Rails应用程序,并且正在构建一个iPhone客户端来与之交互。我的目的是将手机的唯一设备标识符作为HTTPheader传递给应用程序以进行身份验证。当我在本地测试时,我的header通过得很好,但在Heroku上它似乎去掉了我的自定义header。我用ruby脚本验证:url=URI.parse('http://#{myapp}.heroku.com/')#url=URI.parse('http://localhost:3000/')req=Net::HTTP::Post.new(url.path)#boguspara