正文
没那么多废话, 直接正文
服务端照旧使用 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
就是服务端请求数据的接口文件
![](https://img.haomeiwen.com/i1238153/d19e89d7ce4d81a6.png)
效果
当服务器返回Home
时候效果如图:
![](https://img.haomeiwen.com/i1238153/52b72f55edd6be35.png)
当服务器返回Baidu
时候效果如图:
![](https://img.haomeiwen.com/i1238153/3a5549a8d70d8547.png)
整个过程仅仅改变了服务器返回的 framwork
相关JSON
信息.
结论
由此可见,如果模块,结构规划好的话, iOS
端也是完全能够实现 碎片化的插件 更新.只需设计好一开始的壳,后续就完全能靠动态库来开发各种功能.
但是,现实是 Apple
不让这么玩,只能娱乐一下了.如果是企业版的话可以这么尝试一下.
补充: 就当玩玩吧, 现在真机已经不让这么玩了...
网友评论