Можем ли мы прочитать разрешения Wireless Data на iOS? - PullRequest
0 голосов
/ 17 мая 2018

Если Интернет недоступен, можно ли программно различить следующие случаи разрешения?

  1. Случай, когда пользователь отказал в разрешении на использование данных для приложения.
  2. Случай, когда пользователь предоставил разрешения на использование данных, но телефон находится в режиме полета (или вообще не имеет SIM / WiFi).

allow app to use data

Я бы хотел прочитать эти разрешения на Беспроводные данные для , чтобы различить вышеупомянутые случаи для более понятных сообщений об ошибках (т.е. в одном случае я бы порекомендовал проверить разрешения, а в другом случае я бы порекомендовал проверьте режим полета)

Все, что я мог найти, это получить доступ к Интернету, основываясь на Как использовать SCNetworkReachability в Swift , но он не знает о реальных разрешениях:

import SystemConfiguration

@available(iOS 9.0, macOS 10.11, *)
static func internetConnectionIsReachable() -> Bool {
    var zeroAddress = sockaddr_in6()
    zeroAddress.sin6_len = UInt8(MemoryLayout<sockaddr_in6>.size)
    zeroAddress.sin6_family = sa_family_t(AF_INET6)
    guard let reachability = withUnsafePointer(to: &zeroAddress, {
        $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
            SCNetworkReachabilityCreateWithAddress(nil, $0)
        }
    }) else {
        return false
    }
    var flags: SCNetworkReachabilityFlags = []
    guard SCNetworkReachabilityGetFlags(reachability, &flags) else {
        return false
    }
    return flags.contains(.reachable)
}

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Как правило, вы не можете читать права доступа напрямую. Вы можете определять только возможности (под которыми я подразумеваю «он терпит неудачу, когда вы пытаетесь что-то сделать»), которые иногда задаются иными способами, чем контролируемые пользователем разрешения, такие как родительский контроль или ограничения, налагаемые корпоративным сертификатом. Вам может повезти здесь, и есть способ, но я ожидал бы «нет».

0 голосов
/ 20 мая 2018

Одним словом, вы, вероятно, не можете различить эти случаи, и вы, вероятно, не должны этого хотеть.Apple даже не хочет, чтобы вы использовали доступность.Их точка зрения такова: вы не должны объяснять почему, ваши, но должны делать (то есть пытаться использовать сеть) или умереть (то есть потерпеть неудачу).Изящно потерпите неудачу, если вы потерпите неудачу, и вы сделали свою работу.

...