2017-04-14 64 views
3

我想從我的應用程序有8.1canOpenURL打開其他應用 - 不工作的模擬器

我所面臨的問題部署目標中打開Yelp的是我的代碼沒有被正確評估的模擬器。我的設備是iOS 10.3,並且在那裏工作正常(Yelp打開),但是我需要能夠檢查它是否適用於舊版iOS的模擬器!

let urlStr: String = "yelp://" 
    let url = URL(string: urlStr) 
    if UIApplication.shared.canOpenURL(url!) { 
     print("can open") 
     if #available(iOS 10.0, *) { 
      print("10") 
      UIApplication.shared.open(url!, options: [:], completionHandler: nil) 
     } else { 
      print("NOT 10") 
      UIApplication.shared.openURL(url!) 
     } 
    } 
    else { 
     // Can not open URL 
     print("can not open url") 
    } 

雖然在模擬器(的iOS 8.1),下面的打印到控制檯:

can open 
NOT 10 

然而,這是錯誤的! Yelp沒有安裝在模擬器上 - 但如果是這樣的話,print("can not open url")不會評估?

這是我在info.plist中的URLTypes/LSApplicationQueriesSchemes。

Here's my URLTypes/LSApplicationQueriesSchemes in the info.plist.

這有什麼錯我上面的代碼?我如何在模擬器上正確測試Yelp的開放,我可以在各種版本的iOS上開始QA(從8.1開始)?謝謝朋友。

+0

出於好奇 - 在調用'openURL'之後模擬器上會發生什麼?另外,如果可能的話,至少要保留一臺具有所支持的最低版本系統的設備。 – Losiowaty

+0

你有與iOS 9.x或10.x模擬器相同的問題嗎? – rmaddy

+0

您可以嘗試在模擬器中執行「重置內容和設置」,然後運行您的應用程序並查看它是否會給出相同的結果? – janusbalatbat

回答

5

它返回true因爲在你的URL方案,您擁有的項目yelp,基本上系統嘗試,當你調用openURL打開自己的應用程序。更改該項目並再次測試。

+0

好,我看到了,並沒有建立連接,我更關注'LSApplicationQueriesSchemes '。 – rmaddy

+0

哈哈!所以你說的只是擺脫了項目0(yelp)? – Joe

+1

@Joe是的,在'網址類型'部分。你聲明你自己的應用程序響應'yelp如果您的應用需要自己的自定義URL方案,請指定您自己的自定義方案,不要使用Yelp應用的方案。 – rmaddy