標籤:
首先說下這個功能, 應該都有接觸過。
比方,你下載了一個電子書,然後選擇開啟檔案的時候,可能會看到你手機中已經安裝的閱讀類App。
或者,你的QQ收到了某個檔案,你也能夠選擇本地的應用來開啟。
那這種功能,是怎麼實現的呢?
簡單來說。就是調用URL來實現第三方應用的開啟。
首先,被開啟的應用須要提供這個功能, 也就是,它須要注冊一個 URL Schemes,供第三方使用。
假設你想你的應用被調用, 你能夠這樣設定。
在 xxxx info.plist 檔案裡, 加入例如以下屬性
相似這樣:
注意, 這裡的URL Schemes必填, URL identifier選填。
另外,URL Schemes建議都小寫,由於之後接收到資料的時候,不區分大寫和小寫, 都是轉為小寫。
規定的格式是 URL Schemes://URL identifier
之後, 你須要在 Appdelegate.m中加入例如以下代碼, 來處理接受到請求後做出的處理
//處理URL請求- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ NSLog(@"%@", url); if ([[url scheme] isEqualToString:@"myurltest"]) { //處理連結 NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; UIAlertView *myAlert = [[UIAlertView alloc]initWithTitle:@"新訊息" message:text delegate:self cancelButtonTitle:@"知道了" otherButtonTitles: nil]; [myAlert show]; return YES; } return NO;}
這裡我寫了個示範, 推斷是否是開啟本應用的URL, 假設是, 就彈出一個警告框,顯示傳來的資料。
當然,傳來的資料要怎麼處理, 那看你自己了。
之後, 第三方應用就能夠直接調用開啟它了。
我們做個簡單示範, 用Safari來直接開啟。
這裡輸入myurltest://hello 表示開啟的應用的URL Schemes是 myurltest, 傳入的資料是hello
當然, 在應用中開啟,我們能夠使用例如以下方法:
NSURL *url = [NSURL URLWithString:@"myurltest:"];[[UIApplication sharedApplication] openURL:url];
另外, 順便Mark一下一些已知的應用的URL Schemes
你所知道好玩有趣的 iOS URL schemes 有哪些?
iOS開發 - 應用內開啟第三方應用並傳值