最近有個需求,就是另外一個應(yīng)用 A 需要跳轉(zhuǎn)到我們的 B(已設(shè)置url schemes)內(nèi)做某些操作然后再返回到 A 內(nèi),在返回的時候就需要 A 設(shè)置一個url schemes 來讓 B 跳轉(zhuǎn)以返回到 A 內(nèi)。
創(chuàng)新互聯(lián)建站成立于2013年,先為南京等服務(wù)建站,南京等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為南京企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
但是在 A 跳轉(zhuǎn)到 B 后,當(dāng) B 發(fā)現(xiàn) A 沒有把它自己的 url schemes傳過來的時候,B 就傻眼了,B 怎么回去呢,當(dāng)然iOS9之后自帶的返回不用做處理,那么9以下的版本呢,這個時候在 A 跳轉(zhuǎn)到 B 前,就需要判斷下 A 是否設(shè)置了相應(yīng)的url schemes,沒設(shè)置就不讓跳轉(zhuǎn)。
但是問題來了,我要怎么判斷 A 是不是設(shè)置了url schemes 呢?當(dāng)我遇到這個問題的時候,第一反應(yīng)就是去谷歌搜答案,但是這個問題不是怎么好描述,就沒能搜到答案,最后還去stackoverflow提了一問,整整折騰了一下午也沒能找到答案。
今天早起的時候突然想到了以前見過用代碼來回去當(dāng)前系統(tǒng)版本的搜了搜代碼:
NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary]; NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"]; NSString*appName =[infoDict objectForKey:@"CFBundleDisplayName"]; NSString*text =[NSString stringWithFormat:@"%@ %@",appName,versionNum];
infoDict好像就是整個程序的配置文件取出來的字典,忍不住打印了出來。果然發(fā)現(xiàn)了什么
CFBundleURLTypes CFBundleTypeRole Editor CFBundleURLSchemes aaa123
里面有我自己在應(yīng)用內(nèi)設(shè)置的url schems,然后直接取出來就解決了這個問題。
這個問題的解決給了我另外的思路,在遇到一個令人無從下手的問題的時候,除了搜索還應(yīng)該自己去思考一個解決方案,盡管可能很痛苦,但一定要嘗試。