iOS提交应用至APP Store流程

1、申请苹果开发者帐号

首先须要申请苹果开发者帐号才能在APP Store里发布应用。ios

1     准备材料

1.1     公司的邓白氏编码

给苹果公司发个邮件(或则直接拨打苹果开发者服务热线:4006 701 855 2)。他会给你提供免费注册邓白氏码的网址。直接注册就好.数据库

  https://developer.apple.com/ios/enroll/dunsLookupForm.action网络

1.2     公司的营业执照副本和公司中英文名对照证实

证实你公司英文名的信件(这个其实只要一句话说一下就行了,好比你就写此信标明咱们公司的英文名是 XXXX就ok了),公司盖章。app

  不少国内公司都没法传真到国外,这个时候你可使用网络传真,推荐用 http://faxzero.com/ ssh

1.3     一张开通VISA或MASTER的信用卡

能够是我的的,提交账号给Apple代扣款($99美金)测试

2     步骤

2.1     申请邓白氏码

首先要申请邓白氏码,在申请的次日你就会接到电话,跟邮件。那个邮件不是邓白氏码。而是你的申请码。最好是留着吧。是个十位码, 大约中午的时间你会接到华夏邓白氏的电话。就是跟你核对一下资料。大约晚上的时候,你就会接受到新的邮件。那个才是邓白氏码。这个邓白氏码是无效的,须要等至少14天后才可使用.网站

  等14天后,去ios develop网站申请公司开发者帐号,若是提示邓白氏码无效,则给苹果开发者中心打电话,告诉他邓白氏无效,她会处理(多是和邓白氏联系)过几天(具体几天客服会告诉你)邓白氏码就可用了。编码

  而后你会填公司信息的时候可能会遇到提示说公司信息和苹果数据库中的信息不符(实际上是邓白氏的数据库与苹果的数据库未同步),不要着急,接着打电话,她会告诉你在苹果数据库中的公司信息。而后告诉你一个邓白氏的联系邮箱(这个邮箱是邓白氏专为申请苹果公司开发者帐号使用的)你把苹果数据库中的公司信息发给邓白氏让它更改。再等14天,再去申请,一切就ok了.这种状况不是每一个人都会遇到。若是信息相符,那是最好的了。不用再等14天了。加密

 

PS:耐心等待14天后再注册,邓白氏码有尝试次数限制。url

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     激活帐号

付完款后,帐号基本就开通了,而后苹果会发一个激活帐号的邮件,邮件中有激活码,直接点激活码去激活。

到这里开发者帐号申请结束。


2、申请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”了。

 

3、上传应用

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界面

 

选择下面你要发布的程序,点发布就好了。中间会须要一段时间上传应用,以及检测你的应用是否违反苹果的一些规则。没有问题的话就会提交成功。

 

4、存在的问题

1 调用私有API

 

           这个是由于我使用的百度地图的SDK,比较老,出现的问题。缘由是如今获取设备的UDID已是私有方法了。

 

5、经常使用的代码

1      检查更新

-(void)getUpdate

{

    NSDictionary *infoDict = [[NSBundlemainBundleinfoDictionary];

    NSString *nowVersion = [infoDictobjectForKey:@"CFBundleVersion"];

   

    NSURL url = [NSURLURLWithString:@"http://itunes.apple.com/lookup?id=*******"];

    NSString * file =  [NSStringstringWithContentsOfURL:url encoding:NSUTF8StringEncodingerror: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 = [[UIAlertViewallocinitWithTitle:nilmessage:@"版本有更新"delegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"更新",nil];

       [alert show];

       [alert release];

    } else {

       UIAlertView *alert = [[UIAlertViewallocinitWithTitle: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];

    }

}