有的時候在Dropbox或其他的一般App內能夠看到這種功能, 也就是當檔案格式是目前App所無法處理的情況時,
這些App會將所需的檔案下載下來, 在交由對應的App去執行, 一般名字稱為"分享" 或是"Open In"
可以透過一些簡單的方法例如找到有對應的URI就能執行....
(如果你不清楚Bear在說什麼, 內文有詳細解說喔^_<)
這些App會將所需的檔案下載下來, 在交由對應的App去執行, 一般名字稱為"分享" 或是"Open In"
可以透過一些簡單的方法例如找到有對應的URI就能執行....
(如果你不清楚Bear在說什麼, 內文有詳細解說喔^_<)
先讓大家看一下什麼叫做URI Scheme ...
其實Bear比較喜歡它叫做URL....
關於URI Scheme介紹如下:
http://en.wikipedia.org/wiki/URI_scheme
簡單的說, 就是你可以透過知道某些特定的App id : 例如com.xxx.xxx
或是知道他的URL存在就能直接開啟它, 如同本文的教學,
Apple內部有預設一個元件可以直接幫你收集你App內, 有對應jpeg或指定檔案的格式的app
通通收集起來讓你可以一次選取...
不過Bear既然都把這篇分類為中級了, 當然是沒有這麼簡單啦!!!
有時候會想要這樣 "啊...我只想要這個App內分享到LINE的功能而已啊..."的情況
依據使用情境, 其實我們並不需要這麼多功能啊!!
那要怎麼讓你只打開LINE / Skype / WhatsApp的功能呢?
Bear在這邊先跟大家介紹如何不用透過程式來判斷你有沒有裝這個App,
首先拿起你的iPhone - > 打開Safari
輸入以下字串(配合畫面)
其實Bear比較喜歡它叫做URL....
關於URI Scheme介紹如下:
http://en.wikipedia.org/wiki/URI_scheme
簡單的說, 就是你可以透過知道某些特定的App id : 例如com.xxx.xxx
或是知道他的URL存在就能直接開啟它, 如同本文的教學,
Apple內部有預設一個元件可以直接幫你收集你App內, 有對應jpeg或指定檔案的格式的app
通通收集起來讓你可以一次選取...
不過Bear既然都把這篇分類為中級了, 當然是沒有這麼簡單啦!!!
有時候會想要這樣 "啊...我只想要這個App內分享到LINE的功能而已啊..."的情況
依據使用情境, 其實我們並不需要這麼多功能啊!!
那要怎麼讓你只打開LINE / Skype / WhatsApp的功能呢?
Bear在這邊先跟大家介紹如何不用透過程式來判斷你有沒有裝這個App,
首先拿起你的iPhone - > 打開Safari
輸入以下字串(配合畫面)
如果你有安裝LINE這款app, 他就會幫你自動導入到LINE這款App內了噢!!!!!
是不是很簡單呢?
講了這原理以後, 我們來實際看看程式碼會長什麼樣子:
NSURL *url = [NSURL URLWithString: @"line://"];
BOOL isAppInstalled = [[UIApplication sharedApplication] canOpenURL: url];
是不是很簡單呢? 只要透過呼叫UIApplication的實體方法 canOpenURL就能判定你的裝置內有沒有這款App了,
回傳的布林值 isAppInstalled就能知道判定了
麻煩的部分在於, 我們要怎麼知道這些App的URL呢?
這邊Bear整理幾個比較常用的message URL :
(1) LINE -> line://
(2) SKYPE -> skype://
(3) WhatsApp -> whatsapp://
值得注意的是, 這三款App分別在自己的網站上都有公開自己的一個特殊語法,
讓你可以再輸入URL的時候, 順便把你想要傳輸過去的訊息一起傳過去喔!!
參考語法(點選左邊名稱導到官網說明頁)
(1) LINE - > line://msg/<CONTENT TYPE>/<CONTENT KEY>
(2) SKYPE - > skype://users?call
(3) WhatsApp - > whatsapp://send?text=Hello%2C%20World!
最後一小段, 那, 我的App內要怎麼實際去把想要貼的訊息貼到這些App內呢?
有一個Class 叫做UIPasteboard這個物件可以使用, 不過這個Bear要在下一篇文章中介紹
現在我們先練習使用開啟URL的方式傳輸過去吧!!!
方法也很簡單, 以WhatsApp為例
NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"];
[[UIApplication sharedApplication] openURL: whatsappURL];
是不是很簡單呢? 利用openURL就能把字串傳輸過去了!
要注意一件事, 這個範例是在whatsapp中傳輸過去 "Hello World"的字樣
那中間那些%2C是怎麼來的呢?
大家只要記得一點, 透過URL傳輸過去的話, 你需要把URL內的字串都轉成UTF8格式
如果是一般使用者, 比如輸入了 "Hello World"的字串時, 要用以下的方法進行轉換
NSString *message = @"Hello World";
NSString *newMessage = [message stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
透過這樣的轉換傳輸時才不會錯!
最後呢, 如果使用者並沒有你對應的App, 你也可以利用openURL把使用者導入到iTunes App Store上
用法完全一樣!
NSURL *itunesURL = [NSURL URLWithString:@"itms-apps://itunes.apple.com/app/APP_ID"];
(此例子來說, 用LINE的話就是: https://itunes.apple.com/tw/app/line/id443904275?mt=8 可參考下圖)
[[UIApplication shareApplication] openURL:itunesURL];
是不是很簡單呢?
講了這原理以後, 我們來實際看看程式碼會長什麼樣子:
NSURL *url = [NSURL URLWithString: @"line://"];
BOOL isAppInstalled = [[UIApplication sharedApplication] canOpenURL: url];
是不是很簡單呢? 只要透過呼叫UIApplication的實體方法 canOpenURL就能判定你的裝置內有沒有這款App了,
回傳的布林值 isAppInstalled就能知道判定了
麻煩的部分在於, 我們要怎麼知道這些App的URL呢?
這邊Bear整理幾個比較常用的message URL :
(1) LINE -> line://
(2) SKYPE -> skype://
(3) WhatsApp -> whatsapp://
值得注意的是, 這三款App分別在自己的網站上都有公開自己的一個特殊語法,
讓你可以再輸入URL的時候, 順便把你想要傳輸過去的訊息一起傳過去喔!!
參考語法(點選左邊名稱導到官網說明頁)
(1) LINE - > line://msg/<CONTENT TYPE>/<CONTENT KEY>
(2) SKYPE - > skype://users?call
(3) WhatsApp - > whatsapp://send?text=Hello%2C%20World!
最後一小段, 那, 我的App內要怎麼實際去把想要貼的訊息貼到這些App內呢?
有一個Class 叫做UIPasteboard這個物件可以使用, 不過這個Bear要在下一篇文章中介紹
現在我們先練習使用開啟URL的方式傳輸過去吧!!!
方法也很簡單, 以WhatsApp為例
NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"];
[[UIApplication sharedApplication] openURL: whatsappURL];
是不是很簡單呢? 利用openURL就能把字串傳輸過去了!
要注意一件事, 這個範例是在whatsapp中傳輸過去 "Hello World"的字樣
那中間那些%2C是怎麼來的呢?
大家只要記得一點, 透過URL傳輸過去的話, 你需要把URL內的字串都轉成UTF8格式
如果是一般使用者, 比如輸入了 "Hello World"的字串時, 要用以下的方法進行轉換
NSString *message = @"Hello World";
NSString *newMessage = [message stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
透過這樣的轉換傳輸時才不會錯!
最後呢, 如果使用者並沒有你對應的App, 你也可以利用openURL把使用者導入到iTunes App Store上
用法完全一樣!
NSURL *itunesURL = [NSURL URLWithString:@"itms-apps://itunes.apple.com/app/APP_ID"];
(此例子來說, 用LINE的話就是: https://itunes.apple.com/tw/app/line/id443904275?mt=8 可參考下圖)
[[UIApplication shareApplication] openURL:itunesURL];
不過光是這樣還不夠, Bear下一篇教學還有準備一個Opensource怎麼分享到LINE上面喔!!!
資料來源: http://kyleiossdk.blogspot.tw/2013/10/app.html
喜歡這篇文章嗎? 或許以下iOS教學也會對你有幫助!
[入門系列]
1. Xcode 5 - 你的第一支Hello World iOS程式
2. Xcode 5 - UIView 與 UILabel
3. Xcode 5 - 第一顆互動按鈕 UIButton
4. Xcode 5 - 協定與委派
5. Xcode 5 - 如何建立表格 UITableView?
[中級系列]
1. OpenSource - 可拖曳的UICollectionView (DraggableCollectionView)
2. 把Log記錄成文字檔 - Debug測試的好方法
3. 如何把訊息/圖片分享給其他App? (內含LINE, Skype, WhatsApp)
[進階系列]
1. iOS 製作廣播電台
2. iOS 製作視訊串流
3. iOS 與Arduino製作藍芽聊天室
4. iOS 製作長曝光相機
5. iOS CoreblueTooth FrameWork
喜歡這篇教學嗎? 趕快加入Takobear粉絲團吧!