[Swift通天遁地]1、超級工具-(6)經過JavaScript(腳本)代碼調用設備的源生程序

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-qthzbijc-ex.html 
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

目錄:[Swift]通天遁地Swiftios

本文將演示如何經過JavaScript(腳本)代碼調用設備的源生程序。git

在項目文件夾【DemoApp】上點擊鼠標右鍵,彈出右鍵菜單。github

【New File】->【Blank】空白模板->【next】web

->【Save As】:GetDeviceInfo.html->【Create】swift

在GetDeviceInfo.html中輸入網頁代碼:數組

 1 <!DOCTYPE HTML>
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 5         <title>getDeviceInfo</title>
 6         <script>
 7             function getDeviceInfo()
 8             {
 9                 document.location = "callios:getDeviceInfo"
10             }
11         </script>
12     </head>
13     <body style="background-color:#ff7e00">
14         <input type="button" value="Get device information" onClick="getDeviceInfo()" style="width:305px;height:50px;font-size:20px;"/>
15     </body>
16 </html>

在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】微信

如今開始編寫代碼,經過網頁視圖加載剛剛建立的網頁文件,並監聽網頁視圖的加載動做。ide

 1 import UIKit
 2 
 3 //添加一個網頁視圖的代理協議UIWebViewDelegate
 4 //經過該協議中的方法,能夠對網頁視圖的加載動做進行監聽
 5 class ViewController: UIViewController, UIWebViewDelegate {
 6     
 7     //添加一個網頁視圖對象,做爲當前類的屬性
 8     var webView:UIWebView!
 9     override func viewDidLoad() {
10         super.viewDidLoad()
11         // Do any additional setup after loading the view, typically from a nib.
12         
13         //得到當前設備的屏幕尺寸信息
14         let bounds = UIScreen.main.bounds
15         //經過屏幕尺寸信息建立一個矩形的顯示區域
16         let frame = CGRect(x: 0, y: 60, width: bounds.width, height: bounds.height-60)
17         
18         //初始化一個網頁視圖對象,並以矩形區域做爲其顯示區域
19         webView = UIWebView(frame: frame)
20         //設置網頁視圖的代理對象,
21         //該代理對象是當前的視圖控制器對象
22         webView.delegate = self
23         //設置網頁視圖的背景顏色爲無色
24         webView.backgroundColor = UIColor.clear
25         
26         //設置根視圖的背景顏色爲橙色
27         self.view.backgroundColor = UIColor.orange
28         //將網頁視圖添加到根視圖中
29         self.view.addSubview(webView)
30         
31         //得到網頁文件在項目中的路徑
32         let path = Bundle.main.path(forResource: "GetDeviceInfo", ofType: "html")
33         //並將路徑轉換成網址的樣式
34         let url = URL(string: path!)
35         //經過網頁視圖的加載請求方法,加載該網址路徑下的網頁文件
36         webView.loadRequest(NSURLRequest(url: url!) as URLRequest)
37     }
38     
39     //添加一個代理方法,用來監聽網頁視圖的加載動做,
40     //當網頁視圖即將開始加載動做時,調用此方法。
41     func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
42     {
43         //得到網頁視圖即將加載的我那個隻字符串
44         let url = request.url?.absoluteString
45         //將網址以冒號進行分割,並生成一個包含兩個字符串的數組
46         let components = url?.components(separatedBy: ":")
47         //得到數組中的第一個元素
48         let firstElement = components?[0]
49         
50         //若是數組中的第一個元素,和在網頁中編寫的腳本一致,則執行以後的代碼
51         if (components?.count)! > 1 && firstElement! == "callios"
52         {
53             //得到當前設備的模型信息
54             let model = UIDevice.current.model
55             //得到當前設備的操做系統的名稱
56             let systemName = UIDevice.current.systemName
57             //得到當前設備的操做系統的版本號
58             let systemVersion = UIDevice.current.systemVersion
59             
60             //將以上得到的信息拼接成一個字符串常量
61             let message = "Device model:"+model+"\\nSystem name:"+systemName+"\\nSystem version:"+systemVersion
62             //調用腳本的警告語句,在網頁中打開警告窗口,並顯示設備的屬性信息
63             webView.stringByEvaluatingJavaScript(from: "alert('" + message + "')")
64             //最後返回false,使3網頁視圖停止加載的動做。
65             return false
66         }
67         
68         //當網址視圖加載的網址,不是咱們自定義的網址時,則返回真,以繼續網頁視圖的加載動做。
69         return true
70     }
71 
72     override func didReceiveMemoryWarning() {
73         super.didReceiveMemoryWarning()
74         // Dispose of any resources that can be recreated.
75     }
76 }
相關文章
相關標籤/搜索