Je l'ai essayé quelques fois maintenant mais je n'ai pas réussi à le faire fonctionner. Je veux pousser quelques notifications d'une application Qt. Je ai essayé de le faire fonctionner sur macOS Sierra avec l'installation Qt 5.8 et sur Pi3 aussi avec Qt 5.8.Qt 5.8 Echec de la prise de contact du serveur de notification Apple
J'ai créé mon certificat push avec "fastlane pem" et je l'ai testé avec "Pusher" et cela fonctionne correctement. Mais je ne peux pas l'obtenir pour travailler dans Qt ....
Tout d'abord le code que j'utilise pour initialiser et connecter le QSslSocket:
QSslSocket * ssl = new QSslSocket;
connect(ssl, &QSslSocket::encrypted, this, &IOSPusher::encrypted);
connect(ssl, static_cast<void(QSslSocket::*)(const QList<QSslError> &)>(&QSslSocket::sslErrors),this,&IOSPusher::sslErrors);
connect(ssl, static_cast<void(QSslSocket::*)(QAbstractSocket::SocketError)>(&QSslSocket::error),this, &IOSPusher::error);
connect(ssl,&QSslSocket::stateChanged,this,&IOSPusher::stateChanged);
Chargement du certificat
QString path = QStandardPaths::writableLocation(certificateLocation) + "/apns.pem";
const auto certs = QSslCertificate::fromPath(path);
if(certs.count() > 0){
qDebug() << "IOSPusher: Certificate loaded successfully";
}else{
qDebug() << "Could not load certificate : " + path;
}
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setCaCertificates(certs);
ssl->setSslConfiguration(config);
ssl->connectToHostEncrypted(gateway.sandbox.push.apple.com,2195);
Et c'est la sortie i obtenir:
IOSPusher: Certificate loaded successfully
IOSPusher::stateChanged QAbstractSocket::HostLookupState
IOSPusher::stateChanged QAbstractSocket::ConnectingState
IOSPusher::stateChanged QAbstractSocket::ConnectedState
IOSPusher::error QAbstractSocket::SocketError(13)
IOSPusher::stateChanged QAbstractSocket::ClosingState
IOSPusher::stateChanged QAbstractSocket::UnconnectedState
Ainsi, selon la documentation Qt l'erreur:
QAbstractSocket::SocketError(13)
signifie:
SslHandshakeFailedError
Et
> la poignée de main SSL/TLS a échoué et n'a pas pu être établie la chaîne cryptée. Le signal sslErrors() aurait dû être émis.
Mais le signal sslErrors()
ne sera pas émis dans mon cas ....
The SSL/TLS handshake failed, so the connection was closed (only used in QSslSocket)
Toutes les idées ou échantillons comment je peux établir une connexion cryptée à la pomme?
Merci d'avance!