Как проверить, может ли APNS взаимодействовать с устройством? - PullRequest
0 голосов
/ 21 октября 2019

Итак, у меня есть 3 устройства, подключенных через сеть WiFi. Хотя место, где Wi-Fi подключен, имеет более стабильный и устойчивый WiFi, в настоящее время я ограничен использованием их гостевого WiFi. У меня есть сильное предположение, что у них есть настройка брандмауэра на обоих Wi-Fi, особенно на нестабильном стабильном Wi-Fi.

В любом случае, я отправлял push-уведомления устройствам там и домашним устройствам. Внутренние устройства получили уведомление, но те, кто находился в поле, не получили уведомления. Возможно, что у самого интернет-соединения были проблемы, и мы все знаем, что это может привести к сбоям с уведомлениями. Еще одна вещь, которую стоит отметить, это проверить порты. Поэтому я делаю то, что, как мне кажется, мне следует делать, чтобы проверить, открыты ли порты с помощью приведенного ниже кода:

private func isPortOpen(port: in_port_t) -> Bool {

    let socketFileDescriptor = socket(AF_INET, SOCK_STREAM, 0)
    if socketFileDescriptor == -1 {
        return false
    }

    var addr = sockaddr_in()
    let sizeOfSockkAddr = MemoryLayout<sockaddr_in>.size
    addr.sin_len = __uint8_t(sizeOfSockkAddr)
    addr.sin_family = sa_family_t(AF_INET)
    addr.sin_port = Int(OSHostByteOrder()) == OSLittleEndian ? _OSSwapInt16(port) : port
    addr.sin_addr = in_addr(s_addr: inet_addr("127.0.0.1"))
//        addr.sin_zero = (0, 0, 0, 0, 0, 0, 0, 0)
    var bind_addr = sockaddr()
    memcpy(&bind_addr, &addr, Int(sizeOfSockkAddr))

    if Darwin.bind(socketFileDescriptor, &bind_addr, socklen_t(sizeOfSockkAddr)) == -1 {
        return false
    }
    if listen(socketFileDescriptor, SOMAXCONN ) == -1 {
        return false
    }
    return true
}

Я вызываю это 5 раз внутри функции, которую использую для настройки класса (довсе остальное называется в классе). Вот как я его называю:

portsBool.append(isPortOpen(port: 5223))
portsBool.append(isPortOpen(port: 443))
portsBool.append(isPortOpen(port: 2195))
portsBool.append(isPortOpen(port: 2196))
portsBool.append(isPortOpen(port: 2197))

Внутри другой функции я затем получаю portsBool и распечатываю его вместе с отправкой в ​​облачную базу данных.

Вопрос по этому поводу:

  1. Я даже правильно делаю? Я настолько незнаком с сетью, что почти уверен, что это неправильно. Это просто кажется слишком легким .... учитывая большинство, если не вся эта часть была к / п.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...