之前在應(yīng)用里為了檢測NSURL 鏈接為空的情況明郭,在NSURL的分類里添加了一個(gè)檢測url為nil的方法廷区,并用runtime替換掉了系統(tǒng)的方法唯灵,之前調(diào)分享或支付的時(shí)候并沒有問題,自從升級的友盟的sdk后隙轻,再調(diào)分享就總報(bào)錯(cuò)埠帕,白名單設(shè)置了:
-canOpenURL: failed for URL: "(null)" - error: "Invalid input URL"
Share fail with error Error Domain=UMSocialPlatformErrorDomain Code=2008 "(null)" UserInfo={message=應(yīng)用未安裝}
破玩意整了好幾天,一度給我整崩潰玖绿。今天心平氣和的坐下來敛瓷,就仔細(xì)瞅著這個(gè)錯(cuò)誤苦思冥想,到底哪里會有和 URL: "(null)" 相關(guān)聯(lián)的地方斑匪,突然就想到了NSURL 方法交換檢測url為nil的這里呐籽,然后抱著試一試心態(tài),把這個(gè)該死的方法注釋調(diào)蚀瘸,結(jié)果已運(yùn)行果真他娘的可以了狡蝶。真是狠狠的給我一個(gè)叫教訓(xùn)!
問題原因:之前在判斷url的時(shí)候贮勃,先根據(jù)url里是否包含http為關(guān)鍵詞判斷是否為一個(gè)有效的url鏈接贪惹,然而在調(diào)起第三方app這個(gè)鏈接并不是常規(guī)的http開頭的鏈接,比如再調(diào)qq分享時(shí)打開qq的url是這樣的:
mqq://
這種url自然不是平常那種http開頭的地址寂嘉,所以導(dǎo)致在檢測url時(shí)返回了nil奏瞬,進(jìn)入引起如上錯(cuò)誤枫绅。真是tmd自己挖了個(gè)大坑!
+(instancetype)loadUrLWithString:(NSString *)strUrl{
if ([strUrl rangeOfString:@"http"].location == NSNotFound) {
return nil;
}
NSURL * url = [NSURL loadUrLWithString:strUrl];
if (url == nil) {
[self showToast:@"Url是空的丝格!"];
}
return url;
}