2015-07-12 318 views
1

堆棧溢出應用程序檢測我越獄設置的默認瀏覽器(Chrome)的名稱。我如何在objective-c和swift中實現同樣的目標?如何獲取默認的iOS瀏覽器名稱?

(只是名稱,而不是ActivityView代碼)

例子:

chrome


更新:我進入設置>堆棧交流,發現這個:

settings

它看起來應用程序默認爲Safari,但iff Chrome安裝後,鏈接將發送到該瀏覽器。 Chrome最有可能通過下面答案中描述的canOpenUrl方法檢測到。

+0

它是否檢測到Chrome是您的默認瀏覽器或只是您安裝了Chrome?即使沒有顯示,您是否也安裝了Safari? – ndmeiri

+0

@ndmeiri是的,我已經安裝了,還有第三個。通過越獄,我可以將我的默認瀏覽器更改爲Chrome,以便在iOS版Chrome中打開所有應用的鏈接。不知何故堆棧應用程序找到了我目前的「默認」瀏覽器。 – Drakes

回答

1

我懷疑Stack Exchange應用程序沒有專門檢查您的默認瀏覽器。畢竟,由於Apple不提供簡單的方法來更改默認瀏覽器,我懷疑SDK提供了一個API來檢測默認瀏覽器。

取而代之的是,堆棧交換應用可以使用UIApplication上的canOpenURL(_:)方法來測試是否安裝了預定義的一組通用瀏覽器應用。對於安裝的每個瀏覽器,操作表都會獲得一個新按鈕。該方法可能類似於以下代碼片段。

let safariURL = NSURL(string: "http://stackoverflow.com")! 
let chromeURL = NSURL(string: "googlechrome://stackoverflow.com")! 
let operaURL = NSURL(string: "opera-http://stackoverflow.com")! 

let sharedApplication = UIApplication.sharedApplication() // convenience 

if sharedApplication.canOpenURL(safariURL) { 
    // add "Safari" button to action sheet 
} 

if sharedApplication.canOpenURL(chromeURL) { 
    // add "Chrome" button to action sheet 
} 

if sharedApplication.canOpenURL(operaURL) { 
    // add "Opera" button to action sheet 
} 

// display action sheet 
+0

這是一個合理的方法,並且思路良好,但即使我安裝了Safari(可以將其刪除?),Chrome也顯示出來。也許他們使用這種方法,首先檢查Chrome手指交叉? – Drakes

+0

@Drakes也許。測試的一種方法是保持Chrome安裝,但將Safari重新設置爲默認瀏覽器。如果按鈕仍然說Chrome,那麼你是對的。 – ndmeiri

+0

我切換回Safari,它仍然顯示Chrome。我切換到另一個瀏覽器,它仍然顯示Chrome。我刪除了Chrome,並且顯示了Safari。 – Drakes