2015-07-12 4 views
1

Приложение Stack Overflow обнаруживает имя моего браузера по умолчанию, установленного jailbrokenly-set (Chrome). Как я могу достичь той же цели в объективе-с и быстро?Как получить имя браузера по умолчанию iOS?

(только название, а не код ActivityView)

Пример:

chrome


Update: Я вошел в Настройки> Stack биржи и нашел это:

settings

Похоже, что приложение по умолчанию относится к Safari, но iff Chrome установлен, тогда ссылки будут отправлены в этот браузер. Хром, скорее всего, обнаружен методом canOpenUrl, описанным в ответе ниже.

+0

Означает ли это, что Chrome является браузером по умолчанию или только у вас установлен Chrome? т. е. у вас также установлен Safari, хотя он не отображается? – ndmeiri

+0

@ndmeiri Да, я установил и третий, тоже. Через jailbreaking я могу изменить браузер по умолчанию в Chrome, поэтому ссылки из всех приложений открываются в Chrome для iOS. Как-то приложение Stack нашло мой текущий браузер по умолчанию. – Drakes

ответ

1

Я подозреваю, что приложение Stack Exchange не проверяет ваш браузер по умолчанию. В конце концов, поскольку Apple не предоставляет простой способ изменить браузер по умолчанию, я сомневаюсь, что SDK предоставляет API для обнаружения браузера по умолчанию.

Вместо этого приложение Stack Exchange может использовать метод canOpenURL(_:) на UIApplication, чтобы проверить, установлен ли установленный набор общих приложений браузера. Для каждого установленного браузера в листе действий появляется новая кнопка. Этот подход может напоминать следующий фрагмент кода.

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

Смежные вопросы