一、申请苹果开发者账号
首先需要申请苹果开发者账号才能在APP Store里发布应用。
1、 准备材料
1.1 公司的邓白氏编码
给苹果公司发个邮件(或则直接拨打苹果开发者服务热线:4006 701 855 2)。他会给你提供免费注册邓白氏码的网址。直接注册就好.
https://developer.apple.com/ios/enroll/dunsLookupForm.action
1.2 公司的营业执照副本和公司中英文名对照证明
证明你公司英文名的信件(这个其实只要一句话说一下就好了,比如你就写此信标明我们公司的英文名是 XXXX就ok了),公司盖章。
很多国内公司都无法传真到国外,这个时候你可以使用网络传真,推荐用 http://faxzero.com/
1.3 一张开通VISA或MASTER的信用卡
可以是个人的,提交帐号给Apple代扣款($99美金)
2、 步骤
2.1 申请邓白氏码
首先要申请邓白氏码,在申请的第二天你就会接到电话,跟邮件。那个邮件不是邓白氏码。而是你的申请码。最好是留着吧。是个十位码, 大约中午的时间你会接到华夏邓白氏的电话。就是跟你核对一下资料。大约晚上的时候,你就会接受到新的邮件。那个才是邓白氏码。这个邓白氏码是无效的,需要等至少14天后才可以使用.
等14天后,去ios develop网站申请公司开发者账号,如果提示邓白氏码无效,则给苹果开发者中心打电话,告诉他邓白氏无效,她会处理(可能是和邓白氏联系)过几天(具体几天客服会告诉你)邓白氏码就可用了。
然后你会填公司信息的时候可能会遇到提示说公司信息和苹果数据库中的信息不符(其实是邓白氏的数据库与苹果的数据库未同步),不要着急,接着打电话,她会告诉你在苹果数据库中的公司信息。然后告诉你一个邓白氏的联系邮箱(这个邮箱是邓白氏专为申请苹果公司开发者账号使用的)你把苹果数据库中的公司信息发给邓白氏让它更改。再等14天,再去申请,一切就ok了.这种情况不是每个人都会遇到。如果信息相符,那是最好的了。不用再等14天了。
PS:耐心等待14天后再注册,邓白氏码有尝试次数限制。
2.2 信息注册
申请完邓白氏码后,就是去注册iOS公司开发者账号了, 到 http://developer.apple.com/programs/ios/ 这个开发者账号注册入口,开始enroll(注册)。如果你已经有apple的个人账号了,那你可以将你的个人账号作为开发者账号,不然你就新申请一个账号。
当让你选择你是注册成为个人或者公司时,请选择公司。注册是填信息一定要注意,不要乱填,要真是填写,不然后面验证时你就麻烦了。当问你你要选择那个开发平台时,你要选择ios.
当你注册完个人apple账号,就会转入公司信息填写。公司信息填写也要真实填写,这个是会和你的公司营业执照挂钩的,后面审核会用到。注册信息只能是用英文的,所以对于没有英文名的公司和地址,都要先去处理这些东西了。填写完公司信息,下一步就是填写邮件(这个后期会用来跟apple开发者中心联系)和代表人(你可以选择你自己或者你老板的名称,都可以)。接下来就是等待对方审核了,这一般会等待1-2天,如果审核过了,对方会给你发邮件。
PS:代表人,及legal entity字段,必须与申请邓白氏码时填写的一致,否则无法通过,这个即是上面说的数据库信息不符的字段。
2.3 传真资料
apple那边如果通过了你的公司信息,就会发邮件要你传送资料过去(对方会用 devenroll@apple.com这个邮件)。你需要传送你的公司营业执照,一封证明你公司英文名的信件(这个其实只要一句话说一下就好了,比如你就写此信标明我们公司的英文名是 XXXX就ok了),公司盖章。然后传真过去。很多国内公司都无法传真到国外,这个时候你可以使用网络传真(我就是这么做的),推荐用 http://faxzero.com/
这一步是最麻烦的,要等3-4天的审核期
PS:实在不行可以传真到亚洲苹果并请他们转交苹果开发者团队。 不过苹果不推荐这么做。
2.4 电话验证
如果你的传真对方通过了,对方会发邮件给你,让你打电话进行验证。里面有个中文区电话,你可以选择打这个电话。
2.5 付款
电话验证完,一般几分钟你就会收到邮件让你付款。apple是不开通国内在线付款的,所以,你得填一张purchaseform。你要准备一张跨国的信用卡(比如visa,或者mastercard等),把你的信用卡信息填进去,然后吧purchase form再次传真过去。基本上等2天后,如果对方通过你的付款,你就正式开通啦。
2.6 激活账号
付完款后,账号基本就开通了,然后苹果会发一个激活账号的邮件,邮件中有激活码,直接点激活码去激活。
到这里开发者账号申请结束。
二、申请APPID
1 添加BundleID
最后确认提交就好了。
2 连接iTunesConnect
刚激活的账号暂时无法登录iTunesConnect,需要等苹果给你发一封关于可以登录的邮件后才能登录,否则会说你无权限。
3 创建新应用
3.1 登录iTunes Connect后,点击“管理你的应用” 进入管理页。
3.2 点击“添加新的应用”按钮
前两个就不说了,第三个SKUNumber什么意思我也不知道,为了保持唯一,并好记,就和BundleID一样。第四个BundleID一经选择,就不能更改,所以要谨慎选择。
3.3 设置生效时间和价格
这里的价格是按层级来的,并不是具体的多少钱,Tier 1为1美元,在中国商店就相当于6元人民币。
注意下面还有一个你的APP发布的商店,默认是所有商店都发布。
3.4 设置APP信息
包括版本号,所有权
还有APP的内容描述,默认都选择None,根据自己的APP实际情况
然后是一些元数据,关于APP的描述,用于显示在APPStore中。关键字用于用户可以利用这些关键字搜索到你的APP。SupportURL是当你的APP出现问题时,用户可以联系的地址。
接着是APPStore审核的反馈信息,包括联系人信息,以及提供APP的测试账号。
最后是上传Icon、屏幕截图,屏幕截图不超过5张。
提交,就有APP ID了。
4 PS:
注意现在的状态为Preparefor Upload,点击ViewDetails, 进入后点击“Readyto Upload Binary”
接着会询问你是否使用加密功能,选择后保存。
现在的状态为“WaitingFor Upload”了。
三、上传应用
1 创建CSR文件
1.1 打开电脑中的钥匙串
1.2 选择导航栏中下面的选项
1.3 然后输入用户邮箱,名字,选择保存到硬盘。
2 创建发布证书
2.1 选择App Store
2.2 上传刚刚创建的CSR文件
2.3 上传后证书创建成功,下载到本地。
2.4 双击该文件,加入到钥匙串中。
3 创建ProvisioningProfiles
3.1 选择APP Store
3.2 选择App ID
3.3 选择证书
3.4 命名
3.5 最后提交后下载ProvisioningProfiles文件到本地,双击打开添加到Xcode中。
4 Xcode设置
4.1 设置target
这里的BundleIdentifier必须和前面申请的BundleID一致;版本号也必须和前面申请AppID时的版本号一致。
4.2 修改签名文件,必须选择前面创建的ProvisioningProfiles文件
4.3 添加发布配置
如果没有添加一个
4.4 编辑Scheme
选择Distribution
4.5 clean一下工程
4.6 Archive
会跳入到Archives界面
选择下面你要发布的程序,点发布就行了。中间会需要一段时间上传应用,以及检测你的应用是否违反苹果的一些规则。没有问题的话就会提交成功。
四、存在的问题
1调用私有API
这个是因为我使用的百度地图的SDK,比较老,出现的问题。原因是现在获取设备的UDID已经是私有方法了。
五、常用的代码
1 检查更新
-(void)getUpdate
{
NSDictionary *infoDict = [[NSBundlemainBundle] infoDictionary];
NSString *nowVersion = [infoDictobjectForKey:@"CFBundleVersion"];
NSURL url = [NSURLURLWithString:@"http://itunes.apple.com/lookup?id=*******"];
NSString * file = [NSStringstringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
//"version":"1.0"
NSRange substr = [file rangeOfString:@"\"version\":\""];
NSRange range1 = NSMakeRange(substr.location+substr.length,10);
NSRange substr2 =[file rangeOfString:@"\"" options:NULL range:range1];
NSRange range2 = NSMakeRange(substr.location+substr.length, substr2.location-substr.location-substr.length);
NSString *newVersion =[filesubstringWithRange:range2];
if([nowVersion isEqualToString:newVersion]==NO)
{
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:nilmessage:@"版本有更新"delegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"更新",nil];
[alert show];
[alert release];
} else {
UIAlertView *alert = [[UIAlertViewalloc] initWithTitle:nilmessage:@"已是最新版本"delegate:selfcancelButtonTitle:@"确定"otherButtonTitles:nil];
[alert show];
[alert release];
}
}
- (void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(buttonIndex==1)
{
//link地址,下载地址
NSURL url = [NSURLURLWithString:@"https://itunes.apple.com/us/app/***-***-***/id*******?ls=1&mt=8"];
[[UIApplication sharedApplication]openURL:url];
}
}