【转】借助第三方支持https协议的存储实现自己网站上扫描二维码安装IOS APP
使用plist安装,一般是企业级开发者账号不需要登录到APP STORE的IOS设备应用发布时所用到的技巧。
准备:
*一台运行着OSX的苹果电脑,最新版的XCODE,用于导出ipa和plist
一个HTML网页文件(告知iphone如何找到itms-services,已附上)
一个HTTP服务器(存放APP的服务器,就是提供ipa流量的服务器)
一款云存储(以七牛云存储为例,用于推送plist),建议升级到标准版用户,操作非常简单
备选:
一张二维码,一份自动分辨IOS设备的JS脚本
PS:
从2014年6月开始,网上的教程都变得不太好用了,原因有两个:
从IOS7.1开始,http推送plist已经不好使,只能使用https推送
Dropbox已死,需要使用其他支持HTTPS外链的云存储来代替,操作难度升级
开始
第一步:
在使用MACBOOK导出ipa的时候,我们得到ipa的同时,还得到一份plist文件
看到我们导出的plist,需要注意的地方有两个已经用中文标注。
一个是URL,一个是bundle-identifier
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>items</key><array><dict><key>assets</key><array><dict><key>kind</key><string>software-package</string><key>url</key><string>请填上你的ipa下载地址(比如:http://127.0.0.1/app.ipa)</string></dict></array><key>metadata</key><dict><key>bundle-identifier</key><string>请填上你的开发者证书用户名</string><key>bundle-version</key><string>1.0</string><key>kind</key><string>software</string><key>title</key><string>请填上标题</string></dict></dict></array></dict></plist>
1,URL就是我们的ipa存放位置,比如你拥有一台外网服务器,ip地址是12.34.56.78,ipa存放在APP这个文件夹,那么这个地方就填上
http://12.34.56.78/app/应用名字.ipa
2,bundle-identifier就是你申请证书时的名字,格式一般是somebody.app名字
3,这两个point都应该是在你使用XCODE导出ipa的时候要注意填写的
============================
第二步:
使用七牛存储的目的,在于它为我们提供了https连接
具体操作步骤可以参考
http://blog.csdn.net/longxibendi/article/details/37601747 (见下附录)
操作完毕后,只要把生成的超链接复制下来
http://dn-定义的空间名字.qbox.me/应用名字.plist
改成
https://dn-定义的存储空间名字.qbox.me/应用名字.plist
填入到以下的HTML文件,并且添加到网页服务器中发布
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>应用名字</title></head><body><h1 style="font-size:80pt">如果点击无法下载安装,请复制超链接到浏览器中打开<h1/><h1 style="font-size:100pt"><a title="iPhone" href="itms-services://?action=download-manifest&url=https://dn-你的空间名字.qbox.me/你的Plist存放位置/你的plist名字.plist">
Iphone Download</a><h1/></body></html>
第三步:
比如你发布这份HTML网页的地址是
http://12.34.56.78/iphoneAPP.html
使用七牛云存储解决ios7.1的app部署问题
使用七牛云存储解决ios7.1的app部署问题
一.问题描述
开发完ios版本的app。需要将.ipa文件和.plist文件打包上传,供用户下载,在线安装。用户安装过程简单描述如下:
首先通过手机浏览器safari或者扫描二维码获取到下载.plist的地址。然后浏览器会自动跳转到这个地址,下载、读取.plist。(用户跳 转的地址是.plist的下载地址。)这个过程,显然使用http协议来下载.plist文件。最后,iphone通过读取.plist文件中配置 的.ipa下载地址,来安装.ipa文件,来完成ios版本的app。
举例,网站首页中,下载.plist的代码:
<ahref="itms-services://?action=download-manifest&url=http://www.ekwing.com/ekwing.plist"class="mobile-ios"></a>
但是,苹果从ios7.1开始,用户安装app,需要使用https协议,来下载plist文件。也就说,在安装app的第一步,下载.plist文件,需要使用https协议。https协议如下:
这里不详细描述https协议。HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:
1. 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;
2. 用户相信证书颁发机构仅信任合法的网站;
3. 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
4. 该证书正确地验证了被访问的网站(如,访问https://example时收到了给“Example Inc.”而不是其它组织的证书);
5. 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被破坏。
简单描述,用户使用https来下载.plist文件。则需要网站支持https协议。支持https协议,除了服务端做一些配置外,还需要申请一 个数据签名证书。这个签名证书是由签发机构签发的。不能自己配置生成。而申请签名证书需要一段时间。而我们的目的只是希望能够让我们的app被用户正常下 载安装即可。
二.问题分析
解决该问题,就2个方法:
1.自己网站服务上配置https服务,并购买数字签名证书以保证每种类型及其不同版本的浏览器能够安装了证书颁发机构颁发的,我们购买的数据签名证书。时间开销7天左右。
2.将app文件托管到支持https协议的第三方服务器上。
三.解决问题
使用七牛云存储,可以快速,免费解决这个问题。只需要到http://www.qiniu.com/注册一个账号。然后,开通https协议的域名即可。最后将.plist和.ipa文件上传到七牛云存储上即可。操作过程,非常简单。只要注意几点:
1. 开通一个http协议的域名,和一个https协议的域名。
如上图。后缀名是.qiniudn.com的是支持http协议的域名。后缀名是.qbox.me的是支持https协议的域名。上传.plist、.ipa到七牛云存储。
2. 修改下载.plist文件的地址,修改.plist文件内容。
网站首页,下载.plist地址改成上传到七牛云存储上的支持https协议(域名后缀名是.qbox.me)的下载链接地址。
<ahref="itms-services://?action=download-manifest&url=https://dn-ekwing.qbox.me/ekwing.plist"class="mobile-ios"></a>
3. 将.plist文件内容中,.ipa的下载地址,改成七牛云存储上的支持http协议(后缀名是.qiniudn.com)
<string>http://ekwing.qiniudn.com/ekwing.ipa</string>
4. 总结,.plist的下载用https协议,而.ipa的下载用http协议即可。修改完后,就可应用ios6、ios7、ios7.1进行测试了。
四. 感谢七牛云存储
感谢七牛运存储提供免费服务。不过,目前防盗链还不能用。希望能够加上防盗链功能。
五. 因ios7.1安装app,需要用https协议而提示的错误
无法安装应用程序因为证书无效
<Warning>:[ERROR]: Cannot load non-https manifest URL:http://192.168.1.22/ekwing.plist
<Warning>:Could not load download manifest with underlying error: ErrorDomain=SSErrorDomain Code=128 "无法连接" UserInfo=0x1669d990 {NSLocalizedDescription=无法连接}
<Warning>: NSURLConnection/CFURLConnection HTTP loadfailed (kCFStreamErrorDomainSSL, -9813)
<Warning>: Could not load download manifest withunderlying error: Error Domain=NSURLErrorDomain Code=-1202 "无法连接到商店" UserInfo=0x166bc640{NSLocalizedDescription=无法连接到商 店,NSLocalizedRecoverySuggestion=您仍要连接此服务器吗?,NSLocalizedFailureReason=无法建 立安全连接。请检查“日期与时间”设置。,NSErrorFailingURLStringKey=https://192.168.1.22 /ekwing.plist,NSUnderlyingError=0x165b37e0 "此服务器的证书无效。您可能正在连接到一个伪装成“192.168.1.22”的服务器,这会威胁到您的机密信息的安 全。",NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef:0x166b83e0>,NSErrorFailingURLKey=https://192.168.1.22/ekwing.plist}
【转】借助第三方支持https协议的存储实现自己网站上扫描二维码安装IOS APP相关推荐
- 微信扫描二维码登录第三方平台
嗯...... 最近做了一个微信扫码登陆第三方平台功能,说下步骤就行,反正原理你们网上直接百度,我这里写了,估计也没几个人有耐心看 第一步 生成一个链接 https://open.weixin.qq. ...
- QRCode 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式...
QRCode 扫描二维码.扫描条形码.相册获取图片后识别.生成带 Logo 二维码.支持微博微信 QQ 二维码扫描样式 参考链接:https://github.com/bingoogolapple/B ...
- 使用c#捕获usb扫描枪扫描二维码、条形码结果(支持中文版)
之前在18年写过一个使用c#捕获usb扫描枪扫描二维码.条形码结果,当时我是没有遇到需要使用中文的情况,因为二维码都是我自己控制生成的,如果遇到中文,我会提前进行编码编程unicode编码,所以,没有 ...
- 微信扫描二维码,跳转到第三方网页,并获取用户OpenId和基本信息
扫描二维码后,通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 实现步骤: 1.确定回调URL,即扫描二维码,并通过微信授权后,需要跳转的后台URL地址,例如: http://xialti ...
- Android安卓开发集成微信第三方扫描二维码登录-超级无敌具详细
Android安卓开发中集成微信二维码登录的步骤: 写在前面的: 该教程使用AS作为演示,使用ecplise请参照微信官方文档下载相应jar等所需参考文档和资源.在最后,我会附上这个Activity的 ...
- 扫描二维码、扫描条形码、相册获取图片后识别、生成带 Logo 二维码、支持微博微信 QQ 二维码扫描样式
GitHub项目的链接地址 目录 功能介绍 常见问题 效果图与示例 apk Gradle 依赖 布局文件 自定义属性说明 接口说明 关于我 功能介绍 ZXing 生成可自定义颜色.带 logo 的二维 ...
- 让你的网站支持手机二维码登录
如果你的网站能支持二维码登录, 用户打开手机扫描一下, 网页上就立即变为已登录状态了, 是不是很酷? 像腾讯的微信, 手机淘宝等, 都支持用手机扫描二维码登录 Web 版, 极大的方便了用户. 这项技 ...
- Jexus支持HTTPS协议
众所周知,在HTTPS页面请求HTTP资料的时候,现代浏览器会拦截,提示用户是否继续,或者直接拦截,提示都不出来. 最近给自己做了个快速书签工具,点击书签就直接把书签发送到服务器地址,然后保存到我的网 ...
- python api文档生成二维码_使用Python第三方库生成二维码
本文主要介绍两个可用于生成二维码的Python第三方库:MyQR和qrcode. MyQR的使用: 安装: pip install MyQR 导入: from MyQR import myqr imp ...
最新文章
- 如何停oracle的job,ORACLE如何停止一个JOB
- jQuery 表单验证插件,jQuery Validation Engine用法详解
- 2015已经过去三分之一了
- java常用的缓存_java 常用缓存 - 只对肉有感觉的个人空间 - OSCHINA - 中文开源技术交流社区...
- linux支持ppp网卡,linux和安卓上(ppp widget)使用3g网卡的方法
- python写入excel表格数据绘制图表_(原创)xlsxwriter,python excel 写入数据\图表等操作_图表操作(二)...
- 改了两天的bug,一个JWT解决了。。。
- 【天池竞赛系列】阿里移动推荐算法思路解析
- python3.5安装步骤-pycharm安装步骤
- matlab 入门 mobi,MATLAB基础教程 pdf epub mobi txt 下载
- 天线测试系统NSAT-1000,天线测试方案推荐
- 介绍一款rar文件密码破解利器——RAR Password Unlocker
- php手机验证码开发,php网站、手机验证码开发(手机注册验证)
- 涅普计划-PHP入门
- 51单片机 8x8LED点阵屏循环显示数字0~9
- 明朝历代皇帝 庙号、谥号、姓名、生卒年、在位时间、年号
- 机器学习(学习笔记)二 模型评估与选择(上)
- yum mysql的安装目录在哪_yum安装的mysql 目录结构
- H5获取手机型号,获取具体手机型号
- 12306外包给阿里巴巴/IBM到底是否可行?
热门文章
- java调adobe打印_Java报表工具打印方案集锦 | 改变自己
- python中倒背如流_倒背如流100首诗词,你眼中的学霸是怎么做到的?
- 中国朝代顺序表 - 中国朝代更替表,中国历史朝代公元对照简表
- heroku搭建mysql_在heroku上部署Flask应用程序并将其连接到颚数据库mysql数据库
- Docker Desktop启动失败(Docker failed to initialize Docker Desktop is shutting down)
- 我为什么要辞掉20万的工作去读研?
- 《孙子兵法》中的企业领导艺术和方法
- Gbox开源:比RN和WebView更轻的高性能动态化业务容器,你掌握了多少
- Ubantu搭建深度学习和强化学习环境
- 指数衰减学习率的staircase