目标
- 沙盒账号的正确使用方式
- 沙盒账号使用的注意事项
1.沙盒账号是什么
iOS应用里面用到了苹果应用内付费(IAP)功能,在项目上线前一定要进行功能测试。测试肯定是需要的,何况这个跟money有关。。。开发完成了之后,如何进行测试呢?难道我测试个内购功能要自己掏钱?就算是公司掏钱,但是苹果要吃掉3成的啊,想想如果是99刀的商品,点下购买的时候心里都有点发慌。。。
苹果当然没这么坑了,测试内购,苹果提供了沙盒账号(也叫沙箱账号)的方式。这个沙箱账号其实是虚拟的AppleID,在开发者账号后台的iTune Connect上配置了之后就能使用沙盒账号测试内购,有了沙盒账号,就能体验一把土豪的感觉了,游戏钻石什么的随便充,反正不用我的钱。
注意:你可以把沙盒账号看做是一个虚拟的AppleID,这个AppleID只有进行内购测试的功能。
2.沙盒账号使用的前提
- bundleID别搞错了,开发者账号、证书、bundleID要一致
- 内购的商品ID,价格等相关信息已经录入到开发者后台了(不然那你买什么)
- 开发者后台已经创建好沙盒测试账号了(下面我们会讲如何创建)
- 你要有一部真机(iPhone或iPad都行,别用模拟器就好。而且不能是越狱机)
- 如果你是第一次在这个开发者账号上集成内购功能,请先将iTune Connect上的税务协议都填写好,否则内购时会发现商品ID无效。
税务协议的问题不少童鞋遇到了,可以参考这篇文章http://www.jianshu.com/u/62f0c72a2004
3.沙盒账号创建
登录苹果开发者后台--iTunes Connect--用户和职能--沙箱测试技术员,在这个界面你可以看到当前账号已经创建好的沙盒账号。
沙箱测试技术员管理界面点击“+”进行创建
创建沙盒账号 新创建的沙盒账号
如图,我创建一个沙盒账号。具体信息:
- 名字为test1
- AppleID为jianshutest1@123.com(也就是上面填的电子邮件)
- App Store地区为中国
注意:
- 电子邮件不能是别人已经注册过AppleID的邮箱
- 电子邮箱可以是一个不存在电子邮箱(只要符合格式,随便写)
- App Store 地区不要乱选。虽然随便哪个地区都可以用来测试(还没上线之前app并没有地区之分),但是在沙盒测试的时候,弹出的购买提示框会根据当前AppleID(沙盒账号)的地区显示语言的。
4.沙盒账号使用流程
-
1.在iPhone上安装测试包(必须是adhoc签名证书或者develop签名证书打的包,不能是从App Store上下载的)
-
2.退出iPhone的App Store账号(因为我们需要使用沙盒账号登录)。
- 操作方法一:打开App Store应用首页滑到最下方--选中AppleID--注销
- 操作方法二:设置--iTunes Store与App Store--选中AppleID--注销
使用沙盒账号直接登录报错提示这里只需要退出账号,退出之后,不需要在这里登录沙盒账号,因为你压根就登录不了。之前已经说过了,沙盒账号是一个假的AppleID账号,不能直接登录的。如果强行登陆,会出现以下报错提示:
- 3.在测试包里面购买商品,系统会让你进行登录,这里我们点击“使用现有的AppleID”就可以输入刚才创建好的沙盒测试账号进行登录了。
- 4.输入账号之后,有可能会出现如下提示,点击确定之后会跳转到App Store,导致这次购买失败。没关系,我们再次回到测试包,然后购买商品就好
出现提示的原因:因为AppleID是分地区的。之前我们创建沙盒账号的时候就看到了,需要选择地区。App Store也是分地区的,对应的AppleID只能在App Store对应的地区进行下载和购买东西。我们刚才创建的jianshutest1@123.com这个账号的地区是中国,所以只能在中国店面登录。由于我之前的登录的账号越南的,所以此时AppStore店面是越南店面。所以我们这次登录,系统会跳转到AppStore应用将店面切换到中国。另外,App Store应用切换地区的时候,会报【Your request produced an error】。这个不需要管。
- 5.点击购买商品之后,成功的话会出现相应提示。
购买成功提示备注:我们在iTunes Connect上创建商品了之后,除了需要填商品ID,商品名称,商品描述,价格等之外,还要上传一张图片,图片就是上面这个界面。
沙盒账号注意事项
- BudleID,证书,商品ID等内容一致,才能进行接下来的储值测试(BundleID都不对,还玩什么)
- 测试设备需要使用不越狱的真机(越狱机不能进行沙盒储值,模拟器也不能进行沙盒储值)
- 沙盒账号是不能直接在App Store进行登录的,只能在点击了购买商品之后,在弹出的登录框进行登录。
- 真实的AppleID不能在adhoc证书和develop证书打出来的包进行沙盒储值测试,所以在沙盒测试之前,需要退出真实的AppleID账号
- 从App Store上面下载的包不能使用沙盒账号进行储值
关于证书的问题:
1.使用develop签名证书和adhoc签名证书打的ipa包,我把他们叫做测试包,测试包只能使用沙盒账号进行储值,不能使用真实的AppleID进行储值
2.从App Store应用下载的包,我把他们叫做线上包,线上包只能使用真实的AppleID进行储值,不能使用沙盒账号进行储值
另外唠叨一下:
楼主平常上传包的时候是打包了ipa包之后,使用Xcode里面的Application Loader应用上传ipa包的。
虽然很多人上传包使用的是appstore的签名证书,但是,其实使用adhoc的证书打包的ipa包也是可以正常上传并且送审上线的。我平常就是用adhoc的证书打包成ipa包,给测试妹子测试,测试完直接用这个包上传送审了。嘿嘿。
谦言万语
一些经验总结,不当之处敬请指正。写作不易,喜欢请点个赞=_=
网友评论
但是线上发布之后,仍然需要测试下正式包是否能够成功。
如果线上包还没有内购功能,那么你现在也只能在沙盒环境测试了。
2.我们的内购早就做好了,所以已经部署到线上。更新包的话直接在线上测的。
在开发的时候使用绑hosts的方式测试的,跟ipa包没有关系。只是绑hosts之后后端的线上代码是测试环境的。
1、苹果验证那边先走正式环境验证,那为什么验证结果为沙盒账号储值?那后端是怎么去判断沙盒还是正式?
2、你说你拿测试包上传App Store,那你们App测试的时候没有测试环境?
Unknown Errors while creating Sandbox Tester, Please check Error Log, email=18621608361@163.com
大概意思是说发生了一个未知的错误,要我检查错误日志
请问这是啥情况...
现在我有一个问题,如果用户向自己的服务器验证的话,因为网络等原因,验证失败,您建议进行本地持久化,但是如果用户把app卸载了的话,那本地存储的也没有了,这样的情况对于购买就不能做验证了呗?
我们能做的就是拿着收据去苹果那里验证,然后苹果会返回这个订单的信息,但是订单信息里面是没有用户信息的。
另外自己的服务器能从苹果的服务器拿到用户购买的商品列表吗?
http://www.jianshu.com/p/8e36ca394fee
bundleID是iOS包的唯一标识符,描述文件和证书里面包含了bundleID,所以需要对应才能安装到手机上。至于商品ID,你在ITunes Connect上面创建了APP之后,必须要选中一个bundleID才行,可以说是ITunes Conenect上面的一个APP对应着一个BundleID,而你创建的商品是在ITunes Conenect上面APP中创建的,所以这个商品ID最后是跟你的BundleID是对应的。这样的话,如果你拿别人的商品ID来测,是不会有信息的
虚拟的货币会 变化吗>