我正在从事 inapp-purchase 项目,第一次在新应用程序中创建 inapp-purchase iTunes 在 inapp-purchase 管理链接中显示消息,显示消息如下
必须在提交应用程序版本的同时提交应用程序的首次应用程序内购买以供审核。您必须在版本详细信息页面上执行此操作。上传二进制文件并提交第一个应用内购买以供审核后,可以使用下表提交其他应用内购买。
像下面的截图:
我想用设备上的测试用户测试沙箱环境,商店套件返回没有可用的产品!
点击查看应用详情显示屏幕截图下方的警告消息:
我想在设备上测试沙箱(inapppurchase)怎么办?
我的应用没有上传二进制详细信息,我想测试一下!
请......,帮助我重要的......!
谢谢...!
最佳答案
绝对不允许上传二进制!!!
这是一个都市传说,但对于官方 Apple 文档而言,它相当危险: http://developer.apple.com/library/ios/#technotes/tn2259/_index.html
重要提示:在应用程序准备好接受 App Review 批准之前,请勿将开发二进制文件上传到 iTunes Connect。如果二进制文件存在于 iTunes Connect 中并且功能不全,App Review 将审查二进制文件并可能拒绝开发二进制文件。如果您或 App Review 拒绝 iTunes Connect 中的最新二进制文件,测试应用内购买将失败。在这种情况下,解决方法是上传一个没有应用内购买功能的二进制文件,可以通过应用审查批准。二进制文件获得批准后,继续使用应用内购买功能测试二进制文件。
您的问题的解决方案: 您的问题是,您比 Apple 建议的流程更进一步,并上传了应用内购买的图片,所以它在
“准备提交”
状态(见你的插图)这是不正确的(不要问为什么或搜索任何理性,我用它杀了几个小时)你的应用程序必须在
“等待截图”
所以你必须用不同的名字制作一个新的 - 即使你删除了之前的 - 并将它留在“等待屏幕截图”状态,它会立即工作。 另一个经验数据:永远不要使用大写字母作为产品 ID,即使没有任何字母 错误消息或您不应该这样做的指示。 这个文档告诉了你需要知道的一切,但根据我多年的实践,这个过程是一个“技术巫术”,没有人能说出它是如何工作的以及为什么工作。继续尝试,不知何故,它终于奏效了……
UPDATE 2015 Apple fixed the process, now it's working even in "Ready to Submit" phase so you don't need to restart the process if accidentally the picture (named: Screenshot for Review) is uploaded, BUT all the other statements are valid.
关于iphone - iOS 首次 inapp-purchase 必须提交 binary 进行沙箱测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11050605/
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上
考虑这个,它工作正常::>.to_proc.curry(2)[9][8]#=>true,because9>8然而,即使>是一个二元运算符,如果没有指定的元数,上面的代码将无法工作::>.to_proc.curry[9][8]#=>ArgumentError:wrongnumberofarguments(0for1)为什么两者不等价?注意:我特别想用提供的一个参数创建中间柯里化(Currying)函数,然后然后调用然后用第二个参数调用它。 最佳答案 curry必须知道传入的过程的数量,对吧?:-1来自arity的负值令人困惑,但基本上
我正在为我的用户实现一些rubyonrails代码推特内容。我正在创建正确的oauth链接...类似http://twitter.com/oauth/authorize?oauth_token=y2RkuftYAEkbEuIF7zKMuzWN30O2XxM8U9j0egtzKv但在我的测试帐户授予对twitter的访问权限后,它会弹出一个页面,上面写着“您已成功授予对.我不知道用户应该在哪里输入此PIN以及他们为什么必须这样做。我认为这不是必要的步骤。Twitter应该将用户重定向到我在应用程序设置中提供的回调URL。有谁知道为什么会这样?更新我找到了thisarticle声明我需
我刚刚更新了我的gem,当我尝试运行Guard时,出现以下错误:Guard::RSpecDEPRECATIONWARNING:The:clioptionisdeprecated.Pleasecustomizethenew:cmdoptiontofityourneed.这是我的Guard文件:guard'rspec',cli:'--drb'dowatch(%r{^spec/.+_spec\.rb$})watch(%r{^lib/(.+)\.rb$}){|m|"spec/lib/#{m[1]}_spec.rb"}watch('spec/spec_helper.rb'){"spec"}#Ra
我尝试使用Net::HTTP向Twitter发送GET请求(出于隐私原因替换了用户ID):url=URI.parse("http://api.twitter.com/1/friends/ids.json?user_id=12345")resp=Net::HTTP.get_response(url)这会在Net::HTTP中引发异常:NoMethodError:undefinedmethodempty?'for#from/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1
我有一个模型User,它在创建后的回调中创建了选项#Userhas_one:user_optionsafter_create:create_optionsprivatedefcreate_optionsUserOptions.create(user:self)end我对此有一些简单的Rspec覆盖:describe"newuser"doit"createsuser_optionsaftertheuseriscreated"douser=create(:user)user.user_options.shouldbe_kind_of(UserOptions)endend一切正常,直到我将自
当我将IO::popen与不存在的命令一起使用时,我在屏幕上打印了一条错误消息:irb>IO.popen"fakefake"#=>#irb>(irb):1:commandnotfound:fakefake有什么方法可以捕获此错误,以便我可以在脚本中进行检查? 最佳答案 是:升级到ruby1.9。如果您在1.9中运行它,则会引发Errno::ENOENT,您将能够拯救它。(编辑)这是在1.8中的一种hackish方式:error=IO.pipe$stderr.reopenerror[1]pipe=IO.popen'qwe'#