对应万恶的需求-用Bootstrap框架构建响应式网站放大招

如何快速的使用Bootstrap框架构建响应式网站
图片

有一天,老板把一群人叫到办公室,说:刚刚接到一个项目,嗯,项目不大,也挺简单,客户要做一个网站,支持手机和pc,我们一听,嗯,像原来那样用JS识别跳转不就行了嘛,也不复杂,多写一套页面而已。刚想把想法说出来,老板又说了:这次我们不采用原来的跳转了,我们要一个页面支持PC和手机,多个页面客户管理起来比较麻烦。说完老板转身就走了,留下心中万马奔腾的我们。没办法,迫于生计压力只好去找解决方案了,这时候是强大的度娘解救了我,使我了解到还有一种网站既能在PC下正常显示,在手机下显示效果也不差。尼玛,这不就是我要的吗,赶快在各种平台搜索相关资料视频。学习了一段时间,终于有所收获,原来有一种网站叫响应式网站,有一种框架叫Bootstrap,我*,还是脸书出品,脸书出品必属精品啊。

12
看了相关资料才知道Bootstrap问世已经2、3年了,现在越来越多的网站都是响应式的,像一些国际化的大网站早已是响应式的了,如微软官方、苹果官方、IBM官方网站,大家可以试着在浏览器中打开这些网站,然后把浏览器拉窄来,你会发现,在宽屏时与窄屏时网站的显示效果是不一样的,在窄屏是所有的内容都在一屏显示,同时下方是没有左右的滚动条的,现在我们做的项目全都是支持响应式的。

什么是响应式?这是由于我们的电脑显示器的分辨率与手机的分辨率不一样,如果一个传统的网站,你在手机中打开会发现网站的字体图片等信息会很小,小到你几乎看不清,这对于用户来说是非常不好的体验,现在有了响应式我们就可以针对手机平板等这种小屏幕的设备来进行优化,给用户一个良好的用户体验。当然有人会说我们如何知道当前设备是手机还是平板或者电脑呢,其实是有很多方法的,我们可以用JS获取当前设备信息,我们可以知道它是Android手机还是苹果手机还是Windows Phone或者是其他操作系统的收,这种方法是比较发杂的一种方法,我们有个简单的方法来判断是手机、平板、PC,那就是媒体查询,我们可以定义一个宽度,当设备的宽度小于这个值得时候我们就认为它是手机,大于这个宽度就是PC,这样即简单有实用。

图片

Bootstrap框架就是采用了媒体查询来进行构建响应式网站的,Bootstrap框架最关键的就是它的栅格系统了,Bootstrap中定义了container(容器),容器是用来放栅格的,我们以前在传统网站开发的时候总是会这样写css:.main { margin:auto; width:1000px;},现在我们引入Bootstrap框架之后就不用在这样定义主体宽度了,应为容器的宽度是会随着设备的分辨率变化的,见下图:14

图片

当设备的宽度大于1200px的时候,容器的宽度为1170px,当设备的宽度大于992px小于1200px的时候容器款多问970px,当设备的宽度大于768,小于992的时候容器的宽度为750px,当容器的宽度小于768的时候,容器的宽度就是100%了。

栅格系统的使用与列之间的间距的调整,大屏时,container的宽度为1170px,但是当我们把一张图片放在一个容器里面,图片的宽度设置为100%时,我们会发现图片的宽度为1140px,这是应为container有向左和向右各15px的内边距,哪为什么要设置这个15像素的内边距呢,这是因为当我们在手机设备上浏览是,如果没有这个边距的话,文字或者图片就会贴边了,有这个边距的话,这样在手机设备上访问的话就会相对美观一些。

栅格系统把一个容器分成了12等分,为什没是12呢,我想是因为12是2、3、4、6这些数字的倍数,这样我们在对页面进行划分的时候也就能够满足我们大部分的需求了。栅格系统在对容积进行划分的时候还进行了针对不同的屏幕宽度的定义,如:我们可以设置一个div当大屏的时候占3个栅格(3/12=1/4),而当在手机屏幕下的时候,如果占四分之一的话会发现宽度太小了,这时我们可以设置它在手机模式下占一半的宽度,这样就不会由于太窄而信息无法友好的显示了。

图片13

<divclass=”container”>

<divclass=”row”>

<divclass=”col-lg-3 col-md-4 col-sm-6 col-xs-12“>

</div>

<divclass=”col-lg-9 col-md-8 col-sm-6 col-xs-12“>

</div>

</div>

</div>

上面的代码就是一个标准的栅格系统的使用了,为什么要在container下包一个row呢,这是因为每个栅格都有向左与向右的15px的内边距,而row有向左与向右的-15px的外边距,这样的话就刚好抵消了栅格的内边距了,是的容器的左右可以对其了。因为每个栅格都有向左与向右的15像素的内边距,那每个栅格之间的距离就是30像素了,我们在做项目的时候发现30像素对于有些网站来说是太宽了,我们可已通过一些方法来把这之间的间距稍微缩小点,定义css:

.padding5 {padding-left:5px; padding-right:5px;}

.padding10 {padding-left:10px; padding-right:10px;}

使用方法1:

<div class=”container”>

<div class=”row padding5”>

<divclass=”col-lg-3 col-md-4 col-sm-6 col-xs-12 padding10“>

</div>

<divclass=”col-lg-9 col-md-8 col-sm-6 col-xs-12 padding10“>

</div>

</div>

</div>

这样使用的话会似的每个栅格之间的距离变为20像素,如果觉得20像素还是太宽了的话,可以使用下面的方法:

<div class=”container”>

<div class=”row padding10”>

<divclass=”col-lg-3 col-md-4 col-sm-6 col-xs-12 padding5“>

</div>

<divclass=”col-lg-9 col-md-8 col-sm-6 col-xs-12 padding5“>

</div>

</div>

</div>

这样可以使得每个栅格之间的距离缩小到10像素,总之,row上的内边距与栅格上的内边距之和为15像素,这样就不会影响到栅格系统了。

当然了,Bootstrap还有很多的其他功能,如组件与Javascript插件,我们可以用其来实现我们的许多功能,在我做网站的过程中使用最多的有下面几个组件与插件:

1、 Bootstrap矢量图标与FontAweSome矢量图标,详见:

http://code.zoomla.cn/Boot/components.html、http://code.zoomla.cn/Boot/font.html

2、 输入框组件、按钮组件

3、 导航与导航条组件

4、 媒体对像,用来显示图片带标题与简介的列表非常方便

5、 模态框 一个Bootstrap自带的弹出层效果

6、 Carousel 图片滚动效果,

在开始的时候会这些基本上就足够了,关于更多的Bootstrap知识与使用方法可见逐浪官方响应式开发文档:http://code.zoomla.cn/

两步整合Google Translate翻译网站网页

作为一个中文博客,面向的当然主要是国内读者,但也有博主喜欢让非中文用户有机会阅读到自己的文章,特别是如果自己的文章写得真的很不错,看到别国的读者将它们翻译到自己的母语来阅读,这的确是一件很值得“得意”一下的事情。为了方便其他国家的读者更好更快捷地阅读、理解自己博客上的文章,同时在一定程度上提高博客曝光率、增加流量,最好的解决方案,我自己觉得,是将谷歌翻译整合到自己的博客上。

以下以一个WordPress博客为例,如何将谷歌翻译整合到其中?只需两步即可结束操作!

第一步

将下面这行meta代码插入到你页面文件的文档头部中,对于 WordPress所搭建的博客 来说,就在header.php文件里面的这对标签中间:


第二步

在你想要显示谷歌翻译的某个网页位置上插入下面这段代码,如果是WordPress,则在sidebar.php文件中,或者直接到后台小工具添加一个“文档”到边栏更加简单:



就是这么简单!最终效果如下:

Google Translate
可选项

如果你希望自己定制一下谷歌翻译的外观,可以通过为下面这个CSS属性添加一些值:

#google_translate_element {}
上面所列出的代码基本上不用修改就可以使用了,只不过,要是你登录自己的 谷歌帐户 的话,你还可以有更多一些的设置选项。登录谷歌帐户后,你可以通过这条链接来管理添加过谷歌翻译的网站(如果你之前没有添加过网站,则会提示你添加):https://translate.google.com/manager/website/

iis7/7.5下配置web.config实现伪静态

前几天对网站的空间进行了更换,发现原有的URL 重写已经无效了,原来使用的是urlRewriter 实现的伪静态,在IIS6中实现URL 重写大家可以参考下使用URLRewriter.dll实现url重定向。通过和客服沟通才认识到,在IIS7中我们不再需要安装其他组件,通过在web.config 进行简单的配置即可实现URL 的伪静态。方法如下:

 

在web.config 配置文件的configuration 节点中加入下边的代码:

 

<system.webServer>

<rewrite>

<rules>

<rule name=”rulename”>

<match url=”newurl” ignoreCase=”false” />

<action type=”Rewrite” url=”oriurl” appendQueryString=”false” />

</rule>

</rules>

</rewrite>

</system.webServer>

以下直接给出本站的URL 重写规则,相信大家会一目了然:其中,rule 节点即为每个重写规则,match 节点为伪静态的规则;ignoreCase 是忽略大小写;action 是响应的URL,即真正的URL;appendQueryString 为是否跟参数。添加多个rule 时,注意name 名称应该保持不同。

 

<rewrite>

<rules>

<rule name=”rule1″>

<match url=”articles/(\S+)\.html” ignoreCase=”true” />

<action type=”Rewrite” url=”articles/Default.aspx?SubClass={R:1}” appendQueryString=”true” />

</rule>

</rules>

</rewrite>

可见,在IIS6 里如果跟参数的话使用$ 字符,在IIS7 使用{R:数字}代替$ 字符。至于多个参数时,别忘记使用&amp; 替换& 符号

如何实现机械设备在线上的冲击呢?

机械设备相信大家在现实生活中都有了解过,但是想把这么大的机械设备搬到网上来是不是非常不易呢?以以前的人的思想观念肯定不想把这么大的设备转移到网上来卖的,因为很多数据需要提供到网络上,给竞争对手一个非常好的通道了解我们,因此很少有人这样做,光龙网络是一家专业的营销型网站建设公司,他建议:如今,如果还是跟不上互联网时代的话就会被淘汰。因此,想让机械行业在互联网上风靡的话必须跟上时代,让机械行业走上互联网之路,这条路是解决企业经济的最快、最有效的办法。
机械设备行业以往都是通过传统的线下渠道销售,这种传统的线下销售渠道非常的有限,如果不是知名品牌,可能很多人根本就不了解你,更不可能找到你,这样会使企业错失很多机会,随着现在互联网的高速发展,网络营销已经开始慢慢代替原始的传统销售模式,而且现在很多客户在找这种设备的时候都会先通过互联网查找相关的机械设备信息,这时候就需要让客户通过互联网找到你的机械设备产品,所以机械设备行业企业建立一个网站是非常必要的,这个网站不是一个普通的模版型名片网站,而是一个具有高营销力的营销型网站,让客户在互联网上找到你的同时对你的产品产生兴趣,留下深刻的印象,这样才能让客户产生下单成交。
谁在统治着我们的手机?相信大家会说百度、淘宝、腾迅等公司,是的,随着互联网的发展,80%的人天天拿着手机做各种不同的活动,如果至今机械行业还停滞不前的话,只能死在沙滩上了,不管是哪行哪业,都应该顺从网民的习惯,只有顺应这些生意才能发展壮大。

食品批发类的网站想落地互联网必须有出色的设计

设计对一家企业营销型网站重要吗?面对今年一年的经济萧条,找新的出路成为各大企业必须走的路,那么如何才能更好的让企业继续走下去?光龙网络建议必须走互联网道路,互联网发展到今天,大家都被手机统治着,每天花在手机上的时间平均每天高达3小时以上,在这样的一种形势下,很多企业还在说线下做的非常好,不需要网络来做称托,经济,这个词本来就是不稳定的,如果当经济不好的时候或者经济掉入低谷的时候你才想到互网络营销是不是晚了一些呢?所以不管是经济是否好,我们都应该顺应历史的发展,顺应大家对互联网的习惯,只有顺应这些我们的市场才能扩大化,才能横向的发展,让我们走的更稳、更顺畅一些。

在顺应互联网的同时,有2种网站可供我们选择,一种是模板网站,另一种是营销型网站。模板网站是之前我们一直使用过的网站,都是套用模板,各行各业的网站除了产品不一样,其余差不多都是一样的。而营销型网站却不相同,他可以根据您的行业、您的优势、您的盈利模式、您的核心产品等给出不同的策划方案,让目标客户一进我们的网站就可以喜欢上我们,达到更高的粘度,从面提高网站的体验度。但是做好这些是离不开设计这一环节的,最近在我们签单的过程中,很多企业为了省钱,就说设计师我公司有专业的设计人员,依照他们的实力以及专业度一样可以设计出一个好的案例,但是我想告诉这些企业家们,如果每家都是您这样想,那还要网站的灵魂干嘛呢?还要网站的精髓干嘛呢?光龙网络的设计师一个一个都是通过一个月的培训上能上岗的,培训的内容主要是得了解公司的文化、宗旨,还有最重要的一点就是能看懂策划方案,把策划方案看懂了才能设计出更超俗的作品。

选择光龙网络的另一个设计的原因是,光龙网络的设计人员都是设计联盟排名前8的设计师,这些都是大家评选出来的,绝对可以放心的。因此,批发类的网站想让自己突出一些或者说更容易被客户所吸引必须有一个上等的设计师为我们设计一个营销型网站设计才能更好的吸引客户。

++++++++++++++++++++++++++++++++++++++++++++++++

光龙网络

【网站建设】 帮您企业量身打造最适合 您盈利模式的营销型网站

【运营托管】 三个月让您网络营销即刻 启动,网络运营一步到位

【手机网站】 把握先机占领移动互联网 领先同行开启企业全网营销

在线咨询:13662974469

 

纯css实现超宽图片全屏居中(兼容淘宝店铺)

图片是一个网站中必不可少的一部分,网站因图片而变得更加丰富多彩。一张好看的图片,特别是banner图,可以给人一种盛气凌人的感觉,这就是洒家所理解的大气!如何才能做到更加大气呢?

首先要处理好图片。说到处理好图片,除了清晰度外还要考虑一个因素,那就是尺寸。不同的显示器在不同的用户手中会体现出是不同的分辨率。如最经典的大头电脑是1024*768的,普通的笔记本是1366*768,液晶台是1400*900,也有液晶台式是1600*900等等。在如此多的分辨率面前图片的大小显示格外重要。如果你设置的图是1024*768的,在大头电脑面前当然是一个大气的网站,但换成是1600*900的电脑前就变得秀气许多。因此,一些设计师在设计图片时经常将图片设计成1920宽度。对于如此宽的图片如何才能将最重要的内容展现在用户眼前呢?我们都知道,1920宽度显然超出1600*900的屏幕范围,要想将重要的内容也就是中间部位展现出来,图片必定要进行居中处理。通常我们让一个小于屏幕分辨率的容器居中时用一个margin:0 auto;就搞定了,但超出屏幕分辨率的还是此方法行吗?当然是不行的了。不信你可以进行测试,结果会发现下面出现了横向滚动条而且图片最左边依旧对着屏幕最左边。那么究竟该怎么弄呢?js?jq?其实都不用,利用负值+定位就可以轻松的搞定这个问题。源码如下:

  1. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
  2. <html xmlns=”http://www.w3.org/1999/xhtml”>
  3. <head>
  4. <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
  5. <title>纯css实现超宽图片全屏居中(兼容淘宝店铺)</title>
  6. <meta name=”author” content=”艺灵设计,[email protected], www.yilingsj.com” />
  7. <style type=”text/css”>
  8. *{margin:0; padding:0;}
  9. body{overflow:hidden;}
  10. a img{border:none;}
  11. a{display:inline-block;}
  12. .qp{width:1920px; margin-left:-960px;position:absolute;left:50%;text-align:center}
  13. </style>
  14. </head>
  15. <body>
  16. <div>
  17.  <div class=”qp”>
  18.   <a href=”http://www.yilingsj.com”><img src=”http://img03.taobaocdn.com/imgextra/i3/1758846006/T2yh8FXwJaXXXXXXXX_!!1758846006.jpg” /></a>
  19.  </div>
  20. </div>
  21. </body>
  22. </html>

怎么样,搞定了吧。更换成任何小于1920宽度大于屏幕分辨率的图片都可以完美实现全屏居中,至于1920以外的图片就需要更改下代码了,读者可自行更改。如果图片小于1920时,图片也会自动居中的哦。上面的代码实际上是一个框架,而我们要做的是里面的内容。个人感觉这个框架超简单,只用了一个定位就实现了,比起用两个定位来实现要简单的多。只要架好框架,里面内容什么的都已经不是问题了。忘记说了,此框架在淘宝里面也是可以的哦,可以在淘宝里面搜索“马尔杜克”,店铺是洒家装修的哦!

为了淘宝的亲们方便操作,下面附一张说明图,希望对亲们有所帮助。

续写(2013-10-31)
之前看到不少商家写了双重的定位,当时感觉这个是多此一举,但在今天看来,发现自己真的错了,首先我向党忏悔,我有罪,主啊,原谅我吧……好了,废话不多说了,接下来就仔细分析下这个双重定位全屏。首先来看下这个双重定位的样式名称。

  1. .sn-simple-logo

咳咳,这个是系统自带的哦,亲们可以用chrome,ff,opera,360等浏览器右键你懂的哈。由于淘宝里面在模块内容里面屏蔽了absolute,没有付费开通样式的商家就无法定义全屏居中,这下可苦逼了不少美工。但好在天无绝人之路,可以利用系统自带的样式来实现全屏居中。源码如下:

  1. <div>
  2.  <div class=”sn-simple-logo”>
  3.   <div class=”sn-simple-logo”>
  4.    <div>
  5.    轮播,图片,内容什么的都放这个里面
  6.    </div>
  7.   </div>
  8.  </div>
  9. </div>

操作如下图:

发布才能展示全屏的哦,预览无效!

续(2014-01-23):

好像这几天天猫又有小改动了,这次将前面的全屏框架给弄掉了。不过不用担心,方法总是会有的,下面就附其中一个能用的,估计过完年来了后可能又不能用了吧,到时再说吧。附样式:

  1. .sn-msg-box(此样式为系统默认字段,只需要复制下面的模块内容即可!)

模块内容:

  1. <div>
  2.  <div class=”sn-msg-box”>
  3.   <div class=”sn-msg-box”>
  4.    <div>
  5.    轮播,图片,内容什么的都放这个里面
  6.    </div>
  7.   </div>
  8.  </div>
  9. </div>

注:本文预期效果的思路与方法均为个人观点,不代表大众,准确性不做保证,以实现最终效果为标准!代码仅供读者参考。

免费的HTTPS(SSL)证书申请

HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL。

  它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

1、自行颁发不受浏览器信任的SSL证书:
  HTTPS的SSL证书可以自行颁发,Linux下的颁发步骤如下:

openssl genrsa -des3 -out api.bz.key 1024
openssl req -new -key api.bz.key -out api.bz.csr
openssl rsa -in api.bz.key -out api.bz_nopass.key

Nginx.conf的SSL证书配置,使用api.bz_nopass.key,在启动Nginx是无需输入SSL证书密码,而使用api.bz.key则需要输入密码:

server
{
   server_name sms.api.bz;
   listen  443;
   index index.html index.htm index.php;

   root  /data0/htdocs/api.bz;

   ssl on;
   ssl_certificate api.bz.crt;
   ssl_certificate_key api.bz_nopass.key;
   ......
}

  自行颁发的SSL证书虽然能够实现加密传输功能,但得不到浏览器的信任,会出现以下提示:

2、受浏览器信任的StartSSL免费SSL证书:
  跟VeriSign一样,StartSSL(网址:http://www.startssl.com,公司名:StartCom)也是一家CA机构,它的根证书很久之前就被一些具有开源背景的浏览器支持(Firefox浏览器、谷歌Chrome浏览器、苹果Safari浏览器等)。

  在今年9月份,StartSSL竟然搞定了微软:微软在升级补丁中,更新了通过Windows根证书认证程序(Windows Root Certificate Program)的厂商清单,并首次将StartCom公司列入了该认证清单,这是微软首次将提供免费数字验证技术的厂商加入根证书认证列表中。现在,在 Windows 7或安装了升级补丁的Windows Vista或Windows XP操作系统中,系统会完全信任由StartCom这类免费数字认证机构认证的数字证书,从而使StartSSL也得到了IE浏览器的支持。
注册成为StartSSL(http://www.startssl.com)用户,并通过邮件验证后,就可以申请免费的可信任的SSL证书了。申请向导的主要步骤如下:

点击在新窗口中浏览此图片


  点击在新窗口中浏览此图片


  点击在新窗口中浏览此图片


  3、使用案例:
使用StartSSL免费SSL证书的HTTPS(SSL)网站示例:
https://sms.api.bz

  点击在新窗口中浏览此图片

如何在 IIS 中设置 HTTPS 服务

概要

为 Web 服务器配置 SSL

配置文件夹或网站以使用 SSL/HTTPS

参考
概要
HTTPS 是一个安全通信通道,用于在客户计算机和服务器之间交换信息。它使用安全套接字层 (SSL)。本文说明如何在 Internet 信息服务 (IIS) 中配置 SSL/HTTPS 服务,并将此过程与 Apache 中的类似过程进行了比较。

回到顶端

为 Web 服务器配置 SSL
要在 IIS 中启用 SSL,首先必须获得用于加密和解密通过网络传输的信息的证书。IIS 具有自己的证书请求工具,您可以使用此工具向证书颁发机构发送证书请求。此工具简化了获取证书的过程。如果您使用的是 Apache,则必须手动获取证书。

在 IIS 和 Apache 中,您都会收到来自证书颁发机构的证书文件,此文件必须配置在计算机上。Apache 使用 SSLCACertificateFile 指令读取其源文件中的证书。而在 IIS 中,您可以使用网站或文件夹属性的目录安全性选项卡来配置和管理证书。

您可以将证书从 Apache 迁移到 IIS;但是 Microsoft 建议您重新创建或获取一个新的 IIS 证书。

配置文件夹或网站以使用 SSL/HTTPS
此过程假定您的站点已经具备了证书。 1. 以管理员身份登录到 Web 服务器计算机。
2. 单击开始,指向设置,然后单击控制面板。
3. 双击管理工具,然后双击 Internet 服务管理器。
4. 从左窗格中的不同服务站点的列表中选择网站。
5. 右键单击希望为其配置 SSL 通信的网站、文件夹或文件,然后单击属性。
6. 单击目录安全性选项卡。
7. 单击编辑。
8. 如果希望网站、文件夹或文件要求 SSL 通信,请单击需要安全通道 (SSL)。
9. 单击需要 128 位加密以配置 128 位(而不是 40 位)加密支持。
10. 要允许用户不必提供证书就可以连接,请单击忽略客户证书。

或者,如果要让用户提供证书,请使用接受客户证书。
11. 要配置客户端映射,请单击启用客户证书映射,然后单击编辑将客户证书映射到用户。

如果配置了此功能,可以将客户证书分别映射到 Active Directory 中的每个用户。可以使用此功能以根据用户访问网站时提供的证书自动识别用户。可以将用户一对一映射到证书(一个证书标识一个用户),或者将许多证书映射到一个用户(根据特定的规则,对照证书列表来匹配特定的用户。第一个有效的匹配项成为映射。)
12. 单击确定。

企业版IDP的申请及“In House”发布

企业版IDP,即iOS Development Enterprise Program。注意是$299/Year那种,并不是$99/Year的那种。

这种方式的IDP其最大的好处在于:可以发布“In House”应用。

这种应用使用一种叫做“In House Distribution Provisioning Profile”的文件进行发布,不能发布到Apple Shop进行销售,也不需要经过Apple的评审。你可以把“In House”应用通过任何方式发布给你的企业员工、用户及其他你认可的任何人,尤其适合于企业应用的开发。

网上关于个人版/公司版IDP申请流程,以及将应用发布到苹果商店的介绍有很多,但关于企业版IDP以及In House应用的讨论非常之少(尤其国内)。下面,笔者将对这两方面的问题进行一个全面细致的介绍。

1、申请Apple ID

这个步骤就不说了。

2、申请邓白氏编码

邓氏编码是美国联邦政府推荐使用的企业机构编码。可以看成是美国版的“组织机构代码”,只不过已经得到了联合国、澳大利亚政府、欧盟及美国政府的承认,成为了全球企业标准。

苹果公司需要邓氏编码才能申请IDP企业版。这倒不是对国内企业的歧视,而是出于的美国商业习惯。在美国所有的采购合同和商业合同中,都会要求供应商提供一个DUNS(邓氏编码),否则对方可能不会跟你签合同。因为所有的美国企业都使用D&B公司的数据库,这样才能保证所有企业编码不会重复。

申请邓氏编码在D&B公司的网站即可:

http://www.dunsregistered.com/

中文网站“华夏邓白氏”:

http://dnbregistered.com.cn/

在网站上提交注册申请后,等待1-2天,对方人员会跟你联系(Email)。

原来以为申请会很麻烦(交流上),但实际上是由华夏邓白氏的中籍文员跟你联系的。

邓白氏注册服务有几个版本,收费情况也不一样。笔者一开始收到的邮件是“实地核实”的版本,报价15200/2年。

后来经与北京苹果联系,只需要购买最基本的“标准版”即可,报价8600元/2年, 有网友说2000-3000元/年,现在看来是不可能了 ,在这个物价飞涨的年代:-(。

联系时一定要强调是购买标准版服务(最便宜),否则你可能会花冤枉钱。

收到邮件后,把申请表、协议打印出来,填好并加盖公章,然后加上企业营业执照副本、扫描为电子的,发给对方邮箱。

其实还有一个就是汇款水单(小票),需要发送给对方。这一步其实可以省略。笔者申请时并没有email汇款水单 ,只要对方确认汇款到帐即可。

大约5-7天后,对方发来第2封邮件,告诉你贵公司的编码。此外还可以在网站上安装一个邓白氏电子标识——在网页上嵌入指定脚本,则会在页面上显示一个D&B图标,点击图标自动链接到D&B的网站并呈现你们公司的电子注册信息。

3、申请IDP企业版

登录苹果开发者网站iOS Dev Center,申请Apple Developer Program,只不过这次选择的是iOS Enterprise Program链接(在页面底部)。

点击Apply Now,下一页Continue,下一页选择“Use an existing Apple ID”,Continue。

下一页,输入你的Apple ID、密码登录。

后面就是确认注册协议和填写你的公司资料了(英文)。内容最好同邓氏的一样,否则对方会打电话来确认,需要更改。

填写完公司资料,还要填写委托人联系资料。注意委托人应该有代表公司签字的授权(公司认可,他们会在电话里确认)。

提交资料后,可以在邮箱里收到苹果的邮件,内容大概是感谢你提交了申请,申请的编号是多少,公司名称、邮箱地址等等,如果你想看评审流程,可以登录Member Center。

接下来就是等待苹果的电话了。

这个过程大概要2-3天,对方会安排懂中文的人员来电话,如果没什么问题,接下来(电话之后几分钟)会收到苹果的第2封邮件,大意是要你点击邮件中的链接,查看一个协议(我不知道这个协议和第1个协议有什么不同,反正我直接点同意了)。

协议同意后,显示一个页面,大意是你所申请的国家不支持在线购买苹果产品(在线支付),需要你下载一个pdf的purchase form:

1

将它打印出来,根据要求填好,然后传真给苹果。

注意,国内信用卡支持美元支付的一般是Visa卡(如招行)和Master卡(如交行),一定要找那种卡上印有“Visa”或”Master”标志的信用卡。

Cvc2 code是指信用卡背面的那串数字(7位)的末3位。

信用卡地址写申请信用卡时登记的地址。

因为公司的传真机无法发送国际传真,我将purchase form扫描后发给了亚洲苹果 [email protected] , 请其转交给 Billing 团队。

亚洲苹果几分钟后自动回复了一封邮件,并在信中附了一个业务流水号: Follow-Up: 149653 xxx

下次再给亚洲苹果联系时,可以附上这个业务流水号。

然后3-5个工作日后,约早上6点多收到扣费成功短信(信用卡提供的功能)。登录邮箱后,果然收到了苹果的2封email,1封是发票,上面有你的发票号码,单位报账的时候把这封邮件内容打印出来就可以了。另1封是激活邮件,告诉你现在你的idp帐号已经生效了,你点击那个“login now”按钮可以登录到member center,这时可以看到你的developer program overview的状态已经改变。同时,Peoples中会包含一个成员,这个成员就是你注册IDP时所绑定的开发者帐号(Apple ID),同时也是该IDP的Team Admin或Agent。

4、制作iOS 开发者证书

4.1 在本机生成证书请求CSR

打开“钥匙串”应用程序,修改偏好设置如下图所示:

2

选择菜单“钥匙串访问 -> 证书助理-> 从证书颁发机构求证书”.

注意,如果此时密钥中的某个私钥处于选中状态,则菜单会变为“钥匙串访问->证书助理->用<私钥>从证书颁发机构求证书”,这样制作出来的CSR是无效的。3

输入你的email地址和名字。确保email地址和名字与你注册为iOS开发者时登记的相一致。

勾选Saved to Disk(保存到磁盘)及Let me specify key pair information(指定密钥对信息),然后点Continue。4

当选择了Let me specify key pair之后,会要求你指定文件保存位置。接下来按下图所示指定密钥对信息:

5

Continue,即生成了CSR文件。一旦生成CSR,在“登录”钥匙串中会生成一对密钥对(一个私钥,一个公钥)。你可以在钥匙串的密钥栏中查看。

4.2 提交CSR文件

用企业版IDP绑定的Apple ID( 跟制作CSR时要求输的的可能不一致,这里是注册企业版时绑定的iOS开发者帐号,即Agent)登录iOS Provision Portal 。

 

点击“Certificates-> Development” 中的 “Add Certificate”按钮。

6

接下来点击最下面的“Choose file”按钮,选择所生成的CSR文件,然后点 “Submit”。如果密钥长度未设置未2048,Portal会拒绝CSR。

提交CSR后,Team管理员(Agent)会收到一封提醒邮件,主题为 Certificate Request Requires Your Approval,提示你需要去同意该CSR。此时Agent需要登录Portal去同意该CSR。但实际上,Agent也可能根本不需要去点“同意”,Portal几秒钟后就自动同意了——笔者遇到的情况就是这样的。

4.3 下载并安装开发者证书

如果机器上未安装WWDR证书,请点击 “Certificate-> Distribution”中的链接“Saved Linked File to Downloads” ,以下载WWDR证书,并通过双击WWDR证书进行安装。

在“Certificate -> Development”中, 在Your Certificate下会列出当前有效的开发者证书。 点击“Download”,即可下载到本机。下载后双击,即可安装到本机。 可以在钥匙串“证书”一栏中查看到导入的开发证书。

Team 成员只能下载自己的iOS开发证书。Team管理员有权下载所有成员的公有证书。苹果不接受CSR中的私钥。私钥仅对创建者有效,并且必须存储在系统钥匙串里。

4.4 保存私钥并迁移到其他系统

如果你在多台电脑上进行开发或者重装系统,那么把私钥存储在安全的地方是件很重要的事情。如果没有私钥,你无法在Xcode中签名代码并进行真机调试。

钥匙串在生成CSR时,就会在“登录”钥匙串中创建一个私钥。该私钥和你的用户帐号绑定,如果重装OS导致该私钥遗失,则该私钥无法再次生成。如果你想在多台电脑上开发和调试,你必须将私钥导入到每一台机器上:

在钥匙串访问程序中,选择登录钥匙串的“密钥”。可以看到有许多密钥对,选择与你的开发者证书相对应的私钥(还记得创建CSR时要你输入的邮箱地址和名字吗?那个名字会显示在私钥的名字上)。然后选择菜单“文件->导出项目…”,将私钥保存为.p12格式(Personal Information Exchange)。当提示输入密码时,设置一个密码并记住它,它会在导入.p12文件时使用。现住,你可以把.p12文件拷贝到其他机器上并双击它进行安装,这时会提示你输入导出私钥时设置的密码。

5、设备IDs

所谓设备ID(device ID又称UDID)是Apple 设备上的40位16进制码,每台Apple设备的device ID都是唯一的,Apple以此来识别不同的iOS设备。

我们通过在Provision Portal中录入设备的device ID,可以允许开发者在指定真实设备上进行调试。在Provision Portal中最多允许输入100个device ID。

因此,录入device ID是后续制作Provision Profile的必需步骤(而Provision Profile又是真机调试的必需步骤)。

5.1 获取device ID

两种获取device ID的方式:

把Apple 设备(iPhone,iPod)连接电脑,打开Xcode的Orgnizer:

7

把Apple 设备(iPhone,iPod)连接电脑,打开iTunes:

8

那个40位16进制的数字就是device ID。

5.2 添加单个device ID

以Team管理员登录Provision Portal,点击Devices页面中的“Add Device”按钮,在其中输入:

Device Name:设备名称,输入一个描述该设备的名字。

UDID:即device ID。

点击提交即可。

9

6、创建App ID

App ID是识别不同应用程序的唯一编码。如果你的程序要连接Apple Push Notification服务(一种push通知),需要用到App ID。如果应用程序之间要共享钥匙串数据,也会用到App ID。总之,App ID在iOS设备上大量被使用。在这里App ID的最大用处是制作真机调试用的Provision Profile(它需要提供一个App ID)。

一个App ID有两部分构成:一个10位字符的Bundle Seed ID前缀,这个Bundle Seed ID由Apple分配,全球唯一,保证不会重复;一个Bundle Identifier后缀,这个Bundle Identifier由Team管理员指派,Apple建议用反域名规则命名这个Bundle Identifier。例如: 8E549T7128.com.apple.AddressBook.

如果你写了一系列应用程序,它们共用相同的钥匙串(如共用密码),或者根本就不使用钥匙串访问,你可以只创建一个App ID,所有的应用程序都使用以星号结尾的App ID。这个星号就是通配符,只能用于App ID最后一个字符。例如,这个App ID可以是: R2T24EVAEE.com.domainname.* 或者 R2T24EVAEE.*

6.1 创建App ID

以Agent或Team 管理员登录Provision Portal,点击“App ID”页面中的“New App ID”按钮。

10

App ID Name:给这个App ID一个名字。如果存在多个App ID,每个App ID需要一个易于识别的名称。

App ID:如前面所述,Bundle Seed ID是Apple分配的,其实这里只需要你输入Bundle Identifier。可以使用统配符*。

7、制作开发者Provision Profile

拥有了开发者证书(Development Certificate),只是表明你有权利在电脑上进行开发,在模拟器上运行程序,但你还不能在iPhone上运行你开发的程序。其实如果你只是在模拟器上调试程序的话,要不要开发者证书都无所谓,因为证书只是用来代码签名(Code Sign)的,如果在模拟器上跑的话,你可以选择不签名(don’t code sign)。

如果要在真机上调试就不一样了。它需要一个Provision Profile,没有这个Provision Profile,苹果设备无法安装运行你开发的程序。这个Provision Profile中记录了一些信息:开发者证书、开发者Apple ID、一系列设备ID(开发者可以使用哪几部设备进行调试)。

7.1 创建开发者Provision Profile

以Agent登录Provision Portal,在“Provisioning->Development”,点击“New Profile”按钮。

Profile Name:输入Profile的名字,随意。

Certificate: 选择开发者证书。

App ID:选择一个App ID。

Devices:设备ID列表。

 

点击“Submit”,即会生成Development Provisioning Profile。

11

7.2 安装Development Provision Profile

所有Team成员都可以下载Development Provision Profile。但只有Profile中记录了设备ID的设备以及iOS开发者证书所指定的开发者能够使用这个Profile。

在Portal的“Provisioning->Development”,点击某个profile右边的“download”按钮。下载profile后,将下载到的文件拖拽到桌面Dock面板的Xcode图标上(或者直接拖到Xcode的Orgnizer中)。这会将profile文件拷贝到~/Library/MobileDevice/Provisioning Profiles目录。

12

7.3 签名并调试

在Xcode中打开工程,选中 Target,打开info窗口,在Build面板中找到“Code Signing Identify”,打开并点击下面的“Any iOS Device” :

13

在弹出菜单菜单中选择你的签名,该签名应当和一个灰色的Profile对应。这个Profile就是我们前面安装的Development Provision Profile。例如,我们在7.1中创建的Profile 的Profile Name为My First Development Provisioning Profile,那么我们选择的签名就是位于“My First Development Provisioning Profile”(显示为灰色)下面的Team Leader的开发证书。也就是说“My First Development Provisioning Profile”中绑定的开发证书是Team Leader签名的。

在Properties面板(其实就是info.plist中的内容),根据你的App ID设置你的Bundle Identifier。如果你的App ID是A1B2C3D4E5.com.domainname.applicationname( 我们在前面创建的App ID),那么Bundle Identifier可以是 com.domainname.applicationname 。如果App ID使用了通配符,比如 A1B2C3D4E5.com.domainname.* ,则Bundle Identifier可以是com.domainname.<任意字符>。

14

点击项目窗口左上角的下拉框,选择“ Device | Debug ”,然后点击“Build and Debug”按钮,编译并在真机上运行程序。

8、发布应用程序

发布应用程序需要使用发布证书(Distribution Certificate)。发布证书的制作,跟制作开发者证书的步骤是一样的,只不过使用的是Provision Portal的“Certificates->Distribution”功能。

把制作号的发布证书下载、安装到本机。

但是发布用的Provision Profile稍有不同。 企业版IDP只有两种发布方式:In House和Ad Hoc。两种Profile制作步骤稍有区别。 用In House方式发布是企业版IDP真正区别于其他版本的IDP所在。我们重点介绍In House方式的发布。

8.1 制作In House 方式的Destribution Provision Profile

以Team Admin登录Provision Portal,打开“Provisioning Distribution”页面。

15

Distribution Method:发布方式,选择In House。

Profile Name:Profile名称,用于区别多个Profile。

Distribution Certificate:选择要在Profile中绑定的发布证书。

App ID:指定一个已有的AppID。

Devices(optional):要绑定的device ID。由于In House方式可以在任何Apple 设备上发布,所以不需要设定Devices,这一项为空。

点击“Submit”,生成Profile。将Profile下载到本地进行安装。方法:把Profile文件拖拽到Dock上的Xcode图标。

8.2 制作Ad Hoc方式的Distribution Provision Profile

 

以Admin或Agent登录Provision Portal。 打开“Provisioning Distribution”页面。

16

与In House方式大同小异,只不过发布方式选择Ad Hoc,同在Devices(optional)栏勾选要绑定的device ID,最多可选择100个。

点击“Submit”,生成Profile。将Profile下载到本地进行安装。

8.3 编译In House发布版本

打开你的工程。在工程的info窗口的Configuration面板,从Configuration列表中选择Release,点击 “Duplicate”按钮,将复制出来的Configuration改名为Distribution。

17

打开Target的Info窗口,在Build面板,将Configuration修改为Distribution:

18

 

 

点击“Any iOS Device”,在弹出菜单中选择对应Profile下对应的发布证书,这个Profile应该就是前面6.1中制作并安装的In House 方式制作的Distribution Provision Profile(还记得Profile Name吗?):

19

 

切换到Properties面板,在Identifier栏输入Bundle Identifier。该Bundle Identifier应根据App ID填写。

在工程窗口,选择当前配置为Distribution:

20

点击“File->New File”菜单,然后选择“Code Signing->Entitlements”:

21

打开Entitlements.plist,反选“get-task-allow”,保存。 该选项允许其他进程(比如调试器)附加到你的程序,当然,在发布阶段,这个选项应当设置为false。

注意,根据Apple的文档,iOS 4.0/Xcode3.2.3之后创建的Entitlements文件不再包括get-task-allow选项——默认情况下,如果Entitlements中没有get-task-allow选项,则不允许附加进程(即无法调试)。

在调试配置下运行时,你不需要Entitlements文件,因此是允许附加进程的(可以进行调试)。但是有时候,你已经有了一个Entitlements文件(比如你已经运行过Distribution配置),如果你再次运行Debug配置,则程序无法启动,因为get-task-allow默认为false(iOS 4.0及Xcode3.2.3以后)。这种情况下,请手动添加一个boolean类型的get-task-allow键,并设置为false。22

 

再次打开Target的Build设置面板。在“Code Signing Entitlements”中,输入Entitlements.plist的文件名。

23

点击“Build”编译。注意:你需要准备一个57*57像素的图标,iPhone和iPod会在主屏上显示该图标。

选中工程文件夹Products下面的.app文件,然后点击Action下拉菜单中的Reveal in Finder。

8.4 制作安装包

iPhone应用程序的安装文件主要有两种:.ipa格式和.app格式。前者是以.ipa为后缀名的文件(已经包含了ProvisionProfile文件),后者实际是以.app为后缀的文件夹(不包含ProvisionProfile文件)。因此,前者可以直接发布给用户进行安装,而后者需要和ProvisionProfile文件打包在一起进行发布。

8.4.1 制作ipa包

当把.app文件安装到iTunes的资料库之后,应用程序就是以.ipa的方式存在了。在“资料库->应用程序”中选中这个应用程序图标,右键,选择“在Finder中显示”,然后就可以在Finder中把这个.ipa文件拷贝出来了。.ipa文件即可用后面的方法进行安装。

8.4.2 制作rar/zip包

把编译后的.app文件和ProvisionProfile文件一起压缩为rar/zip文件,即可发送给其他人进行安装,或者发布到网络上以供下载。注意,不要使用Mac自带的归档工具。因为windows使用ANSI编码而Mac使用Unicode编码,二者互不兼容,这样使用归档工具压缩出来的rar/zip包无法在windows下解开。你可以使用开源的压缩工具keka:

http://www.kekaosx.com/release/Keka-0.1.4.2.dmg

keka能制作在windows下兼容的压缩包。解压缩后的文件可用后面介绍的2种方法之一进行安装。如果一种方法不能安装,可换用另一种方法。

 

 

8.5 安装应用程序

Ad Hoc或In House发布的应用程序,可以将.app与Provision Profile文件打包在一起发送给用户。用户可以用两种方式安装:使用iTunes,或者使用iPhone配置使用工具。

8.5.1 使用iTunes

用户将压缩包中的.app和Provision Profile文件拖到iTunes的“资料库->应用程序”下,然后和iPhone/iPod进行同步。

8.5.2 使用iPhone配置实用工具

iPhone配置工具是完全免费的,你可以从这里下载:

http://support.apple.com/kb/DL926?viewlocale=zh_CN

安装后会在“应用程序/实用工具”中生成一个快捷方式“iPhone配置实用工具”。

同样,将iPhone/iPod连上电脑,打开“iPhone配置实用工具”,将.app和Provision Profile文件拖放到“iPhone配置实用工具”的“资料库->应用程序”下,然后选中你的iPhone/iPod,在右边“安装或删除应用程序列表”中,点击某个应用程序右边的“安装”按钮进行安装。

 

9、问题及错误

如果Xcode出现Code sign错误:

Code Sign Errors: profile doesn’t match any valid certificate/private key pair in the default keychain

同时在Organizer中出现下列提示:

A valid signing identity matching this profile could not be found in your keychain

则需要把钥匙串中的所有证书和密钥删除,然后重新请求证书、修复provision profile、下载并安装,一般可以得到解决。

 

如何让网站所在虚拟主机(服务器)支持apk(ipa)格式文件下载

怎么把app(apk和ipa文件)安装包放在服务器上供用户下载?

IIS服务器网站不能下载.apk文件的原因:IIS的默认MIME类型中没有.apk文件,所以无法下载。解决办法:给.apk格式文件添加一个MIME类型。

IIS服务器端的解决方法:
1、打开IIS服务管理器,找到服务器,右键-属性,打开IIS服务属性;
2、单击MIME类型下的“MIME类型”按钮,打开MIME类型设置窗口;
3、单击“新建”,建立新的MIME类型;
4、
扩展名中填写
.apk MIME类型中填写apk的MIME类型 application/vnd.android.package-archive
.ipa MIME类型中填写ipa的MIME类型 application/iphone

5、单击“确定”保存设置。
6、重启IIS,使设置生效。

虚拟主机空间后台的解决方法:
1、进入网站空间的后台控制面板中,找到类似“自定义Mime类型”的选项,在此选项页面自定义MIME类型。
2、扩展名中填写“.apk”,MIME类型中填写apk的MIME类型“application/vnd.android.package-archive”
3、确认后即可使设置生效。