前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Laravel 框架生成 Plist 数据

Laravel 框架生成 Plist 数据

作者头像
ITer.996
发布2019-08-28 10:31:52
发布2019-08-28 10:31:52
76700
代码可运行
举报
文章被收录于专栏:PHPer技术栈PHPer技术栈
运行总次数:0
代码可运行

前言:

在客户端版本更新中,常用有两种更新方式,一是上架应用宝和苹果应用商店,二是上传到服务器,客户端做包版本更新检测,今天,小编给大家详细讲解一下客户端版本更新原理。 原理如图所示:

在常见包更新中,安卓 apk 包通过访问服务器 http:xxx.apk 包文件下载地址直接更新,而 ios 包则需要先读取 plist 文件,获取 URL 地址,来实现。

Plist 文件说明

Plist 文件用于 iOS 企业版 app 更新,客户端并不是直接访问 ios 下载,而是通过读取 Plist 文件,获取 URL 下载地址,通过 https 请求访问,获取 ipa 文件下载地址。 plist 是指.plist 后缀的文件,文件存储的下载版本信息,以及下载 URL,其文件格式如下:

那么,作为一名 PHPer,我们应该怎么生成 plist 文件了,接下来,为大家详细讲解。

①封装生成 plist 文件代码

代码语言:javascript
代码运行次数:0
复制
/**
     * 生成xml格式
     * @param $url
     * @param $title
     * @return string
     */
    public function xml($url,$title){
        header("Content-type:text/xml;charset=utf-8");
        $html = '<?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>'.$url.'</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>url</key>
                    <string>cdnhttps.demo.png</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>url</key>
                    <string>cdnhttps.demo.png</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>com.demo</string>
                <key>bundle-version</key>
                <string>1.0.0</string>
                <key>kind</key>
                <string>software</string>
                <key>title</key>
                <string>'.$title.'</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>';
        return $html;
    }

②封装生成 Plist 文件方法

代码语言:javascript
代码运行次数:0
复制
/**
     * 生成plist文件
     * @param $link
     * @param $title
     * @param $filename
     */
    public function Plist($link,$title,$filename){
        // 生成plist文件
        $xml = $this->xml($link,$title);
        $myfile = fopen($filename, "w") or die("Unable to open file!");
        $resource = fwrite($myfile, $xml);
        fclose($myfile);
        if($resource){
            $data['url'] = $filename;
        }else{
            $data['url'] = '';
        }
        return $data;
    }

③调用 plist 方法生成文件

代码语言:javascript
代码运行次数:0
复制
 // ipa格式生成plist文件
    public function uploadPlist(){
        $url = 'https://demo.cn/web/156453846783.ipa';
        // 生成plist文件
        $title = '包名';
        $link = $url;    //  ipa下载地址
        $filename = 'demo.plist';    // plist文件名
        $plist =  $this->Plist($link,$title,$filename);
        $data['url'] = $plist['url'];       
        echo $data;
    }

简单三步,直接生成 plist 文件,通过情况下,plist 文件会保存在服务器跟目录下,与图片上传的目录一直,laravel 框架则默认在 upload 中。

当 plist 文件生成完毕后,我们可以选择上传到服务器或七牛云保存,将生成好的 plist 文件路径返回客户端,这样一个完整的实现过程就讲解完毕了。

注意事项:

plist 文件放到支持 https 的服务器上;(重点支持 https)

客户端接受处理 Plist 文件,获取到 plist 文件的下载地址,并把它怼到下面那个地址里:

代码语言:javascript
代码运行次数:0
复制
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-services://?action=download-manifest&url=你的plist文件的下载链接"]];
# 解释--itms-services://?action=download-manifest&url= 这句系统的一个协议命令。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PHPer技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • Plist 文件说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档