美文网首页
iOS动态更新技术探索 (下)

iOS动态更新技术探索 (下)

作者: ZHK1024 | 来源:发表于2017-12-08 16:41 被阅读14次

正文

没那么多废话, 直接正文

服务端照旧使用 PHP 简单搞一搞
全部代码:

<?php
    header("Content-type:application/json;charset=utf8");
    $host = $_SERVER['HTTP_HOST'];
    
    $json['librarys'] = [0 => ["name"      => "Home",
                               "className" => "HomeViewController",
                               "type"      => "framework",
                               "url"       => "http://".$host."/update/librarys/Home.framework.zip",
                               "version"   => "1.0"
                              ]
                            ];
    
//    $json['librarys'] = [0 => ["name"      => "Baidu",
//                               "className" => "BaiduViewController",
//                               "type"      => "framework",
//                               "url"       => "http://".$host."/update/librarys/Baidu.framework.zip",
//                               "version"   => "1.0"
//                              ]
//                        ];
    
    echo json_encode($json);
?>

此部分返回的内容为 Home 模块相关信息, 内容为网络加载一张图片.

    $json['librarys'] = [0 => ["name"      => "Home",
                               "className" => "HomeViewController",
                               "type"      => "framework",
                               "url"       => "http://".$host."/update/librarys/Home.framework.zip",
                               "version"   => "1.0"
                              ]
                            ];

此部分返回的内容为 Baidu 模块相关信息, 内容为使用WKWebView加载https://www.baidu.com.

    $json['librarys'] = [0 => ["name"      => "Baidu",
                               "className" => "BaiduViewController",
                               "type"      => "framework",
                               "url"       => "http://".$host."/update/librarys/Baidu.framework.zip",
                               "version"   => "1.0"
                              ]
                        ];

服务器目录相关文件如图:
librarys(应该是libraries?不要在意细节)
librarys文件夹下存放的是为客户端提供的相关动态库的压缩包.(动态库如何打包此处不做介绍)
request.php就是服务端请求数据的接口文件

www.png

效果

当服务器返回Home时候效果如图:

home.png

当服务器返回Baidu时候效果如图:

baidu.png

整个过程仅仅改变了服务器返回的 framwork 相关JSON信息.

结论

由此可见,如果模块,结构规划好的话, iOS 端也是完全能够实现 碎片化的插件 更新.只需设计好一开始的壳,后续就完全能靠动态库来开发各种功能.
但是,现实是 Apple 不让这么玩,只能娱乐一下了.如果是企业版的话可以这么尝试一下.

补充: 就当玩玩吧, 现在真机已经不让这么玩了...

相关文章

网友评论

      本文标题:iOS动态更新技术探索 (下)

      本文链接:https://www.haomeiwen.com/subject/dvpeixtx.html