二维码的生成
二维码的黑白点里隐藏的信息是什么?是IOS项目的特有超链接格式:
itms-services:///?action=download-manifest&url=(plist文件的URL)
可见核心在于plist文件的位置,以及plist文件中的内容。
plist文件配置
app.plist
<?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文件的URL</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>开发者证书用户名即bundleId</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>AAl</string>
</dict>
</dict>
</array>
</dict>
</plist>
在这里,我们又发现了另外一个关键点,即ipa文件的URL。可以说,这个需求的核心步骤是这两个URL的定位。
动态读写plist文件
由于项目是基于nodeJS,那真是一件令人兴奋的事情。像这种繁琐的文件读写操作,node在npm的支持下,这简直易如反掌。我们选用npm的plist模块,这个模块可以轻松操作plist文件,包括读写。
https://www.npmjs.com/package/plist
基本使用方法如下:
var fs = require('fs');
var plist = require('plist');
data = fs.readFileSync(plistUrl, 'utf-8')
var obj = plist.parse(data, 'utf-8')
console.log(obj)
console.log(obj.items[0].assets)
console.log(obj.items[0].assets[0].url)
打印结果如下:
{ items: [ { assets: [Array], metadata: [Object] } ] }
[ { kind: 'software-package', url: 'IPA文件的URL' } ]
IPA文件的URL
obj.items[0].assets[0].url = `new url`
console.log(obj.items[0].assets[0].url)
obj = plist.build(obj)
打印结果如下:
new url
fs.writeFile(plistUrl, obj, err => {
if (err) {
// 错误处理
}
})
这样我们就完成了plist文件的读取,结合前端传来的数据对plist文件进行修改。
生成二维码
天秀的npm又来了,虽然我们知道二维码就是01码去生成的,但是单独去写一个二维码的呈现似乎不太经济,qrcodejs2帮我们完成。
let qrcode = document.getElementById("qrcode");
qrcode.innerHTML = ""
new QRCode(qrcode, {
width: 250, // 设置宽度
height: 250, // 设置高度
text: '我想将这串字符串转成二维码'
});
生成的二维码如下: