1.使用URL Scheme跳轉(zhuǎn)到其他應(yīng)用
如果我們想要跳轉(zhuǎn)到別的應(yīng)用,首先你要知道其他App的Scheme是什么店枣?以下是一些常見的應(yīng)用的Scheme
QQ mqq://
微信是 weixin://
網(wǎng)易新聞 newsapp://
淘寶 taobao://
點(diǎn)評(píng) dianping://
微博 sinaweibo://
支付寶 alipay://
豆瓣fm: doubanradio://
微盤 sinavdisk://
網(wǎng)易公開課 ntesopen://
美團(tuán) imeituan://
人人 renren://
我查查 wcc://
1號(hào)店 wccbyihaodian://
有道詞典 yddictproapp://
知乎 zhihu://
優(yōu)酷 youku://
ZAKER zakeripad://
mdict mdict://
京東hd openApp.jdiPad://
易迅 icson://买置;yixunipad://
wunderlist wunderlist://
支付寶 alipay://
比如我們想要跳轉(zhuǎn)去微信寄悯,首先我們把微信的schemes加入到應(yīng)用的白名單。在當(dāng)前app的info.plist文件中增加LSApplicationQueriesSchemes字段為Array堕义,然后把需要跳轉(zhuǎn)的應(yīng)用加入猜旬。如下圖
然后在觸發(fā)事件加入下面的代碼
letstring="weixin://data=xxx"http://data=xxx為傳遞參數(shù)leturl=URL.init(string:string)ifUIApplication.shared.canOpenURL(url!){letdict=[:]as[String:Any]//iOS10 之后 open方法增加了 參數(shù)options可以傳遞一個(gè)字典 攜帶一些信息給被跳轉(zhuǎn)的app處理, 還有一個(gè)閉包倦卖,來傳遞是否跳轉(zhuǎn)成功洒擦?if#available(iOS10.0,*){UIApplication.shared.open(url!,options:dict,completionHandler:{(res)inprint("跳轉(zhuǎn)是否成功?\(res)")})}else{// Fallback on earlier versionsUIApplication.shared.openURL(url!)}}
schemes可以傳遞信息,這里的weixin://之后的內(nèi)容 data=XXX就是傳遞的參數(shù)怕膛。iOS10 之后 open方法增加了 參數(shù)options可以傳遞一個(gè)字典 攜帶一些信息給被跳轉(zhuǎn)的app處理熟嫩, 還有一個(gè)閉包,來傳遞是否跳轉(zhuǎn)成功褐捻?
這里注意一下要對(duì)url scheme 進(jìn)行encoding 編碼掸茅,否則漢字 空格 會(huì)崩潰
2.創(chuàng)建Schemes讓其他app來跳轉(zhuǎn)到我們的app
(1.)在App內(nèi)的info->URL Ttpes->增加一個(gè)URL Schemes如下圖
(2.)處理其他app跳轉(zhuǎn)過來的攜帶的信息
在Appdelegate里面添加下面方法
//此方法從iOS9開始啟用funcapplication(_app:UIApplication,open url:URL,options:[UIApplicationOpenURLOptionsKey:Any]=[:])->Bool{print(url,options)returntrue}//此方法iOS9之后被廢棄funcapplication(_application:UIApplication,handleOpen url:URL)->Bool{returntrue}//此方法iOS9之后被廢棄? url 為scheme url sourceApplication 為跳轉(zhuǎn)過來app的bundle idfuncapplication(_application:UIApplication,open url:URL,sourceApplication:String?,annotation:Any)->Bool{returntrue}
以上三個(gè)方法實(shí)現(xiàn)一個(gè)即可,可依據(jù)自己兼容的最低iOS版本而定柠逞。
3.系統(tǒng)的一些Schemes
系統(tǒng)內(nèi)置? ? telprompt:10010tel:10010//撥打電話facetime://user@example.com//facetime 通話facetime-audio://user@example.com// facetime 語音sms:86-130-9999-9999&body=你好//body 為信息內(nèi)容 可省略 bodymailto:foo@example.com?cc=bar@example.com&subject=Greetings%20from%20Cupertino!&body=Wish%20you%20were%20here!//第一個(gè)為發(fā)送給誰 參數(shù)cc為抄送給誰 subject 為郵件的主題 body為內(nèi)容 后面的參數(shù)都可以省略itms-apps:itms-apps://itunes.apple.com/cn/app/idXXXXXX?mt=8&action=write-review//跳轉(zhuǎn)appstore去評(píng)價(jià) 注意把id后面的XXXXX換成自己應(yīng)用的號(hào)碼昧狮。
//直接跳轉(zhuǎn)到系統(tǒng)對(duì)應(yīng)的設(shè)置頁面,但是試驗(yàn)發(fā)現(xiàn)iOS10 可以執(zhí)行,iOS11無效電池電量 App-Prefs:root=BATTERY_USAGE? ? 通用設(shè)置 App-Prefs:root=General? ? 存儲(chǔ)空間 App-Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE? ? 蜂窩數(shù)據(jù) App-Prefs:root=MOBILE_DATA_SETTINGS_ID? ? Wi-Fi 設(shè)置 App-Prefs:root=WIFI? ? 藍(lán)牙設(shè)置 App-Prefs:root=Bluetooth? ? 定位設(shè)置 App-Prefs:root=Privacy&path=LOCATION? ? 輔助功能 App-Prefs:root=General&path=ACCESSIBILITY? ? 關(guān)于手機(jī) App-Prefs:root=General&path=About? ? 鍵盤設(shè)置 App-Prefs:root=General&path=Keyboard? ? 顯示設(shè)置 App-Prefs:root=DISPLAY? ? 聲音設(shè)置 App-Prefs:root=Sounds? ? App Store 設(shè)置 App-Prefs:root=STORE? ? 墻紙?jiān)O(shè)置 App-Prefs:root=Wallpaper
作者:liangZhen
鏈接:http://www.reibang.com/p/3e450cbb742b
來源:簡(jiǎn)書
著作權(quán)歸作者所有板壮。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)逗鸣,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。