• Flash开发iOS应用全攻略(三)——如何使用iOS开发者授权以及如何申请证书


    上一篇我介绍了如何申请成为合法的iOS开发者,这篇文章会详细介绍如何使用授权文件(.mobileprovision)和签名证书文件(.cer)

    在缴费成功后会收到一份来自Apple Developer Suport的确认邮件,如下图.

    pic01

    在邮件里有一个Login按钮,点击后可以进入Apple Developer会员中心。点击图中的iOS Provisioning Portal,进入开发者授权设置系统。

    pic02

    在设置界面中,可以选择点击页面下方的助手来运行向导。

    pic03

    或者直接从左边的导航来设置,我在这篇文章会主要介绍如何通过导航设置开发者授权以及证书。不过在此之前,我要先简单介绍一下Apple开发者授权的一些基本知识。

    Apple对其设备有严格的使用限制,任何应用程序都必须经过iTunes Store下载安装,要么直接从设备里下载,要么从电脑中通过iTunes下载后同步到设备中。所以没有经过破解的设备是没有办法直接安装IPA文件的。但是Apple也提供了一套面向开发者的机制,让他们可以在指定的设备上安装IPA文件来测试和开发,这个机制的核心就是开发者授权。我前面介绍的申请流程就是申请获得一个可以在设备中安装运行IPA文件的开发者授权。

    使用开发者授权是一套完整而且相对合理的流程,它可以分为下面几个阶段:

    1. 授权设备,将开发者授权与指定的设备绑定在一起,使得这些设备可以自由安装开发者发布的IPA。
    2. 生成授权文件.mobileprovision,这个文件会被打包进入IPA,实现设备与授权开发帐号的绑定。
    3. 生成证书文件.p12,这个文件也会被打包进入IPA,实现应用发行商的签名以及身份验证。

    除此之外,开发者授权系统还提供了开发(Development)和发布(Distribution)两个不同的渠道。开发测试的时候需要设备的绑定而实现在设备上单独安装IPA,发布的时候则不需要绑定设备。所以开发与发布需要使用不同的.mobileprovision与.cer文件。

    下面回到刚才的开发者授权系统,我先来介绍一下如何在开发阶段使用授权与证书。

    授权设备

    点击左侧导航的Device,进入授权设备的页面,点击右上方的Add Device按钮可以添加一个设备。

    pic04

    添加设备的时候可以指定设备的名字(随便写),以及设备的UID(Unique Identifier)。每一个Apple的设备都有一个唯一的识别码,获得这个识别码的方法很简单,将你的设备连接到电脑,然后在iTunes里找到你的设备信息(如下图),点击图中红色方框的位置,设备UID就会显示出来。可以直接通过Ctrl + C (苹果是Command + C)可以把UID拷贝到剪切板。

    pic05

    添加App ID

    点击左侧导航的App IDs按钮可以进入应用程序ID的配置页面,可以点击页面右方的New App ID按钮添加一个新的应用。这个ID对应的是即将开发和测试的应用程序。如下图,在description里添加一个单一应用的名称(不支持特殊字符),然后在最下面的Bundle Seed ID里面填入一个含有domain格式的字符串(如com.jamesli.appname)。Bundle Seed ID是一个集合了开发商与应用程序的信息,格式为(com.[开发商].[应用]),这里可以指定为单一应用,也可以指定为全部应用。如果是单一应用,建议刚才填写的description与Bundle Seed ID的最后一项相同(如angrypigs和com.jamesli.angrypigs),如果是全部应用,可以使用这样的Bundle Seed ID: com.jamesli.

    pic06

    申请开发者证书

    申请证书的流程在MAC和WIN上是不同的。我分别介绍:

    MAC

    在Applications->Utilities里手动打开Keychain Access。从顶部菜单栏里Keychain Access -> Certificate Assistant -> Request a Certificate from Certificate Authority. 在新弹出的窗口中填写你的信息后选择Save to disk,就会在桌面保存一个CertificateSigningRequest文件。(如下图)

    pic07

    WINDOWS

    在Windows下申请Apple证书是一件非常痛苦的事情,下面我就详细介绍以下:

    1. 首先需要在下面的链接下载OpenSSL。

      http://www.slproweb.com/products/win32openssl.html
      如下图,你需要下载Visual C++ 2008 Redistributables 和 Win32 OpenSSL v1.0.0d Light

    pic08

    1. 下载安装后,在C盘下就有一个OpenSSL-Win32的安装目录。

    pic09

    1. 以管理员身份打开命令行进入OpenSSL-Win32/bin文件夹,如果你不是管理员,需要先在命令行中键入下面的命令

    set RANDFILE=.rnd

    键入下面的命令,生成一个private key:

    openssl genrsa -out mykey.key 2048

    然后键入下面的命令,申请一个CertSigningRequest文件,注意emailAddress后面是你的邮箱,CN后面是你的名字,C后面是国家

    openssl req -new -key mykey.key -out CertificateSigningRequest.certSigningRequest -subj "/emailAddress=yourAddress@example.com, CN=Common Name, C=CN"

    这样在OpenSSL-Win32/bin下面就生成了一个CertificateSigningRequest.certSigningRequest文件,注意任何错误提示都不要忽略,否则即使生成了文件也可能无法使用。

    pic10

    这个过程请不要使用Chrome浏览器

    返回开发者授权系统的Certificate页面里,点击页面右方的Request Certificate申请一个证书,然后点击页面下方的按钮上传生成的certSigningRequest文件,这样就完成了证书的申请流程。申请成功后,Certificate页面里就有了一条证书,刷新几次页面后证书的状态就变成Issued,点击download按钮可以下载一个cer文件。

    pic11

    接下来是通过cer文件生成p12文件的过程。因为Flash发布iOS应用需要的证书文件格式是p12。这个流程在MAC和Windows上也是有区别的。

    MAC

    点击下载的.cer文件,文件会自动在Keychain Access里打开,可以右键点击key导出一个p12文件,如下图:

    pic12

    WINDOWS

    Windows下生成p12仍然比较麻烦。首先使用管理员身份打开命令行进入OpenSSL-Win32/bin文件夹,如果不是管理员身份则同样需要先运行下面的命令:

    set RANDFILE=.rnd

    为了操作方便,将下载的cer文件拷贝到bin文件夹下,然后运行下面的命令行生成一个pem文件

    openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM

    然后运行下面的命令生成一个p12文件:

    openssl pkcs12 -export -inkey mykey.key -in developer_identity.pem -out iphone_dev.p12

    在输入了两次密码之后,便会在bin文件夹下有一个iphone_dev.p12的文件。

    使用开发者授权

    正如上面我们提到的,如果要发布一个可以在指定的设备上单独安装的IPA,则必须使用开发者授权文件.mobileprovision。这个文件可以从开发者授权系统中申请获得。

    点击左侧导航的Provisioning进入授权页面,如图点击右侧的New Profile按钮创建一个新的授权文件。

    pic13

    在创建页面中填入名称,选择创建好的证书,以及指定设备(可以多选),提交后就可以生成一个授权帐号。并且可以下载一个mobileprovision文件到本地。

    到现在,我们就具备了Flash发布iOS应用的两个重要文件,.mobileprovision和.p12,返回Flash,在发布设置的Deployment选项卡中填入这两个文件(如下图)。这样就可以在指定的设备中开发iOS项目了!

    pic14

    下周我会继续给大家介绍如何在iTunes Connection中创建以及上传你的应用。

  • 相关阅读:
    DataTable不能通过已删除的行访问该行的信息解决方法
    datatable删除行之datatable.Rows[i].Delete()。标记之后行没有了
    js判断字符串是否在数组中
    发布webservice之后调用不通
    实体类配置xml相关属性排序问题、json前后台交互
    Java堆和栈的区别 经典总结
    Java IO
    XSL 简明教程 (下)
    XSL 简 明 教 程(上)
    跟我学XSL
  • 原文地址:https://www.cnblogs.com/keng333/p/3030239.html
Copyright © 2020-2023  润新知