iOS新增快捷方式到桌面
iOS新增快捷方式到桌面#
涉及:OpenUrl、iOS shceme、Data URI Scheme、JS、Socket#
功能:將應用的某一個頁面或某一個功能以快捷方式形式新增到桌面,使用者點選桌面圖示,可以喚起應用並開啟對應頁面或功能。
原創文章,歡迎轉載分享 微博@劉東寰
背景
使用者在使用如微博、淘寶、貼吧、百度地圖時,有些頁面開啟頻率非常高,甚至某個應用只為了這幾個單一的功能,這個時候,可以考慮將對應的功能頁面以快捷方式新增到桌面上。
實現這個功能的基礎
因為沒有找到或沒有這個功能的開放API,因此只能藉助Safari,在Safari中,有一個功能叫:新增到主螢幕,而我們將使用這個入口去實現這個功能。
Safari中新增到主螢幕,就是把當前頁面的url以圖示的形式新增到桌面,點選該圖示,還是開啟Safari並開啟對應的url,和我們想要的效果不一樣,繼續看下去。
iOS之OpenUrl
OpenUrl(開放連結)
例如:
[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"tel://xxx"]];
在iOS中,如果我們要在應用裡喚起撥號應用,會使用這麼一種方式,"tel://" 就是撥號應用在程式裡註冊的scheme,所有應用都可以在程式裡註冊scheme,這種scheme在整個手機裡是通用的,第三方的分享也是依賴這種方式通過openURL:scheme的方式喚起自己的應用。
那麼如何註冊自己應用的scheme?網上關於這方面非常多,就貼個連結吧here.
OpenUrl在這個功能的利用就是:
- 通過OpenUrl喚起Safari,讓Safari訪問一個指定頁面。
- Safari儲存到桌面的圖示,在點選時通過OpenUrl喚起我們的應用。(你可以在Safari位址列輸入tel://xxx)
Safari開啟怎麼樣的頁面?
通過OpenUrl,我們可以讓應用開啟Safari並訪問一個頁面。我們知道Safari新增到桌面是把當前的URL新增到桌面,那麼,當我們點選圖示的時候也是訪問這個頁面。而這個頁面在第一次被開啟的時候需要顯示一些引導頁之類的,而在桌面被開啟的時候卻需要呼叫一個scheme。這似乎不太可能,我們接著往下看。
JS
對JS不是太熟悉,以下方法來自網路
<script>
if (window.navigator.standalone == true)
{
var lnk = document.getElementById("你的帶scheme的<a>標籤ID").click();
//通過你所知道的方式開啟一個scheme,上面這句話的連結標籤如:<a href="tel://xxx">
}
else
{
document.getElementById("msg").innerHTML='<div style="font-size:12px">
可以插入引導頁</div>';
//這裡你可以去載入你的引導頁
}
</script>
你可以試試通過Safari儲存一個頁面到桌面,再開啟這個頁面,你會發現,前者是非全屏狀態,而通過快捷方式開啟的Safari是全屏的。這正是一個突破口。
if (window.navigator.standalone == true)
判斷當前頁面是否全屏,如果非全屏,那麼我們顯示引導頁,如果是全屏,我們就開啟一個連結。到這裡,上一個問題就被解決了。
已經可以實現這個功能了
現在你可以在伺服器部署一個網頁實現這個功能了。但是,還是有缺點的,每次點選快捷方式我們都需要訪問這個頁面,如果網路狀態不好,那麼是很大的延時,(比如xx貼吧目前的狀況)。
進一步優化之利用Data URI Scheme
我們希望這個頁面不依賴網路。在這個過程中試驗了多種方案,這裡只貼我認為最妥的一種。
做過前端的小夥伴可能說到這就明白了,Data URI Scheme(DATA-URI 是指可以在Web 頁面中包含圖片但無需任何額外的HTTP 請求的一類URI.)比如網頁裡需要放一張圖片,這張圖片會有一個地址,而圖片的獲取是需要訪問網路的。但是通過DataURI,我們可以把圖片進行base64編碼直接儲存在頁面中。
![](http://xxxx/xx.png)
->
![](http://upload-images.jianshu.io/upload_images/1971004-4e4b821f981fd216.png)
這裡,我們就要通過這種方式,把我們的網頁儲存在位址列,首先,我們將做好的頁面(含引導頁和跳轉scheme)通過base64編碼成DataURIScheme,接著,我們放入這樣一個新頁面的<meta>標籤。這個新頁面的作用就是作為一箇中間物,所以其他可以不寫。
<meta http-equiv="refresh" content="0;URL= ‘your datauri’>
這個新頁面你需要部署到伺服器,接著應用就開啟這個頁面,這個時候,頁面會自動重新整理一次,你會發現,你編碼過的網頁就出現在了位址列,是不是很神奇。然後你把這個頁面新增快捷方式到桌面。斷開網路,再試試開啟這個快捷方式吧。
該專案的Demo: iOS新增快捷方式到桌面
微博:@劉東寰
相關文章
- win10怎麼建立桌面快捷方式_win10新增程式快捷方式到桌面的步驟Win10
- Linux下新增桌面快捷方式Linux
- iOS APP建立桌面快捷方式iOSAPP
- Android桌面新增快捷方式的實現Android
- 如何在 Ubuntu 桌面手動新增應用快捷方式Ubuntu
- win10如何把網頁新增到桌面快捷方式_win10網頁設定桌面快捷方式的方法Win10網頁
- Windows10系統無法新增桌面快捷方式如何解決Windows
- Ubuntu中給新下載安裝的軟體,新增桌面快捷方式Ubuntu
- PWA - ios 新增到桌面功能(踩坑之路)iOS
- manjaro 新增tash 快捷方式JAR
- Linux:ubuntu桌面操作快捷方式LinuxUbuntu
- iOS 新增 GPUImage 到自己的工程!iOSGPUUI
- windows10系統如何在桌面新增檔案歷史記錄列表快捷方式Windows
- 如何在Mac桌面設定快捷方式?Mac
- 用java 能建立桌面快捷方式嗎?Java
- 命令列新增我的電腦圖示到桌面命令列
- win10傳送到桌面快捷方式的方法_win10系統怎麼傳送到桌面快捷方式Win10
- 用BCB在windows桌面建立快捷方式 (轉)Windows
- win10清除桌面快捷方式小箭頭Win10
- win10怎麼建立快捷方式_windows10建立桌面快捷方式的方法Win10Windows
- 如何在網頁新增網站快捷方式網頁網站
- Win10系統新增快捷方式到開始選單的方法【圖文教程】Win10
- 網頁快捷方式怎麼設定_win10如何建立網頁桌面快捷方式網頁Win10
- window10怎麼顯示桌面_windows10桌面切換快捷方式Windows
- linux mint 18.2桌面新建Eclipse快捷方式LinuxEclipse
- Robot Framework-Ride建立桌面快捷方式(最簡單!)FrameworkIDE
- win10去掉快捷方式箭頭怎麼操作 win10取消桌面快捷方式箭頭方法Win10
- Android Launcher研究(四)-----------桌面應用快捷方式的開發!Android
- win10怎麼刪除快捷方式箭頭_win10去掉桌面快捷方式箭頭步驟Win10
- 重回Fedora13之給應用程式新增快捷方式
- win10如何新增桌面圖示_win10新增桌面圖示的方法Win10
- win10傳送到桌面快捷方式不見了如何解決_win10電腦沒有傳送到桌面快捷方式選項怎麼恢復Win10
- ubuntu 給app新增桌面圖示UbuntuAPP
- 如何在桌面新增AppWidgetAPP
- Android 7.0新特性——桌面長按圖示出現快捷方式Android
- win10桌面快捷方式圖示變白的解決方法Win10
- Windows 8系統下桌面的快捷方式如何去掉小箭頭Windows
- 如何用WinCE CabManager製作的cab檔案,建立桌面快捷方式?