你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發基礎 >> iOS App創建桌面快捷方式

iOS App創建桌面快捷方式

編輯:IOS開發基礎

本文是投稿文章,作者:李劍飛(博客)
Safari有一個“添加至屏幕”的功能,其實就是在桌面上添加了一個網頁書簽,App可以使用這個功能來實現創建桌面快捷方式。

SpeedyDesktop.gif

一、運用基本技術點

  • JavaScript

  • Data URI Schema

  • Socket基本知識

  • Base64編碼

二、基本原理

程序內部創建一個簡單的Web站點,通過這個站點調用Safari,站點將自定義的Html頁面返回給Safari,此時利用Safari的“添加至主屏幕”功能,將自定義的Html制作成桌面書簽,當用戶點擊桌面圖標時,則運行自定義的Javascript來進行跳轉至App。

三、什麼是 data URI scheme?

假設你有以下的圖像:

A .png

把它在網頁上顯示出來的標准方法是:

001.png

這 種取得資料的方法稱為 http URI scheme ,同樣的效果使用 data URI scheme 可以寫成:
002.png

換句話說我們把圖像檔案的內容內置在 HTML 檔案中,節省了一個 HTTP 請求。

網頁優化的一大首要任務是減少HTTP 請求 (http request) 的次數,例如通過合並多個JS文件,合並CSS樣式文件。除此之外,還有一個data URL 的密技,讓我們直接把圖像的內容崁入網頁裡面,這個密技的官方名稱是 data URI schema 。

Data URI scheme 的語法

我們來分析一下這句 img 標簽的語法:

002.png它包含以下部分:

  • data – 取得數據的協定名稱

  • image/png – 數據類型名稱

  • base64 – 數據的編碼方法

  • iVBOR…. – 編碼後的數據

: , ; – data URI scheme 指定的分隔符號

四、什麼是 Base64 編碼?

簡單地說它把一些 8-bit 數據翻譯成標准 ASCII 字符,網上有很多免費的 base64 編碼和解碼的工具。

五、Socket基本知識

自行腦補,這裡我用了iOS中很棒的一個HttpServer第三方框架CocoaHttpServer。

六、實現

上面基本知識介紹完畢,下面開始撸代碼。

iOS 的代碼很簡單,我們使用CocoaHttpServer創建一個本地的站點即可。

點擊事件

- (IBAction)action:(id)sender
{
    [DDLog addLogger:[DDTTYLogger sharedInstance]];
    _httpServer = [[HTTPServer alloc] init];
    [_httpServer setType:@"_http._tcp."];
    NSString *webPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Web"];
    DDLogInfo(@"Setting document root: %@", webPath);
    [_httpServer setDocumentRoot:webPath];
    [self startServer];
}

創建HttpServer

- (void)startServer
{
    // Start the server (and check for problems)
    NSError *error;
    if([_httpServer start:&error])
    {
        DDLogInfo(@"Started HTTP Server on port %hu", [_httpServer listeningPort]);
        // open the url.
        NSString *urlStrWithPort = [NSString stringWithFormat:@"http://localhost:%d",[_httpServer listeningPort]];
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStrWithPort]];
    }
    else
    {
        DDLogError(@"Error starting HTTP Server: %@", error);
    }
}

ok。核心代碼來了…

創建一個index.html文件,裡面內容如下:

007.png

什麼意思呢?
屏幕快照 2015-08-27 上午11.32.39.png

頁面定期刷新,如果加url的,則會重新定向到指定的網頁,content後面跟的是時間(單位秒),把這句話加到指定網頁的裡一般也用在實時性很強的應用中,需要定期刷新。

這個文件放在文件夾WEB目錄下,切記這個文件在工程中是實體文件夾,folder references。

接下來我們會再創建一個content.html的文件,但是這個文件不會放在WEB文件夾內,而是轉換成data URI schema  放在上面的重定向到指定網頁的位置。

以下是我demo的content.html文件的內容:
屏幕快照 2015-08-27 上午11.30.57.png
相信稍微做過前端開發的同學們都看懂是什麼意思了,我這裡大概講一下。

上面這那幾個meta標簽其實就是為了設置樣式,更多詳情請看蘋果官方文檔關於這部分的介紹。

下面這個link就是快捷方式的啟動圖標,這個圖片是經過Base64編碼的。

再下面的title就是快捷方式的名稱。

接下來body標簽中的超鏈接就是我demo的URL Schemes,通過URL Schemes來跳轉進我們的App。下面的span標簽用來占位,我們使用JS代碼來控制它的顯示內容。

這段JS代碼的意思就是檢測iOS WebApp是否運行在全屏模式。

iOS上的Safari浏覽器可以讓Web應用程序全屏顯示,以取得類似本地應用的顯示效果。但是這需要用戶把Web應用程序的圖標添加到主屏幕才可以。作為開發者,為了更好的顯示效果,我們可能希望自己開發的Web應用程序在非全屏狀態下運行時提示用戶把Web應用程序的圖標添加到主屏幕。要檢測Web應用程序當前是否運行在全屏狀態,只要檢測window.navigator.standalone是否為true就可以了,如果這個屬性為true則表示Web應用程序當前運行在全屏狀態,否則運行在非全屏狀態。檢測到Web應用程序運行在非全屏狀態時就可以提示用戶把Web應用程序的圖標添加到主屏幕。

最後再把content.html裡的這段代碼通過這個網站轉換成data URI schema 放在index.html中,就完成了。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved