2015-12-09 6 views
0

Из-за ошибки времени ожидания NSURLRequest в iOS 8 и выше мне пришлось отключить поддержку на моем сервере Apache. Я читал об этом https://stackoverflow.com/a/25996971/3162662 о том, как установить BrowserMatch, и я сделал это, как в httpd.conf:Apache BrowserMatch iOS для отключения keepalive. Соответствие всей версии iOS?

<IfModule setenvif_module> 
    BrowserMatch "iOS 8\." nokeepalive 
</IfModule> 

Но мне интересно, если это относится только к прошивке 8? Что относительно iOS 9? Как я могу сопоставить все запросы от iOS?

Спасибо!

ответ

1

По this table os Safari user agents, кажется, что вы могли бы предназначаться устройством, как это:

BrowserMatch "iPhone" nokeepalive #All iPhones 
BrowserMatch "iPhone|iPad|iPod" nokeepalive #All iPhones, iPads and iPods 

Если вы хотите настроить таргетинг на конкретную версию системы, я бы что-то вроде этого:

BrowserMatch "iPhone.*OS\s8" nokeepalive #All iPhones on iOS 8 
BrowserMatch "iPhone.*(OS\s8|OS\s9)" nokeepalive #All iPhones on iOS 8 

Я быстро проверил Chrome и Firefox для пользовательских агентов iOS, и похоже, что одно и то же регулярное выражение будет работать. Конечно, все это требует некоторого тестирования.

+0

спасибо, но я делаю сетевой запрос программным путем, используя NSURLSession. Я предполагаю, что я должен настроить «CFNetwork»? в соответствии с этим http://stackoverflow.com/a/18406586/3162662 – user3162662

+1

Извините, я не видел, чтобы вы делали ваши запросы программно. Я проверил журналы некоторых приложений, которые у нас есть, и вижу различные пользовательские агенты. Я думаю, что лучшим вариантом может быть проверка журналов доступа Apache, чтобы узнать, что используется вашим приложением. – Simon