web-dev-qa-db-fra.com

Comment tester la notification push fonctionne dans mon application

Dans mon application, j'implémente le service de notification push.
J'ai un serveur de fournisseur de contenu, qui contient certains produits.
J'ai généré le certificat de client SSL et l'ai attaché à mon profil d'approvisionnement de développement. Ce profil est également ajouté à mon application.
J'ai écrit le code dans les méthodes de délégation (guidé par les directives Apple pour la mise en œuvre de la notification push). Tous ensemble.

Maintenant, je veux tester mon application pour savoir si elle transmet la notification Push conformément à l'exigence. Toute idée sur comment puis-je tester cela m'aiderait beaucoup.
Devrais-je ajouter un nouveau produit au serveur du fournisseur de contenu pour tester cela? 

Si oui, combien de temps APNS faudra-t-il pour envoyer la notification Push à mon appareil?

37
Naved

Très bon guide est affiché ici: Programmation Apple Push Notification Services

Et une application ici: App PushMeBaby Mac Os que vous pouvez télécharger et utiliser pour envoyer des notifications Push vers vos appareils depuis un Mac.

APNS enverra la notification Push à votre appareil dès que celui-ci sera disponible. Si je ne me trompe pas, votre appareil envoie une requête ping à APNS toutes les minutes.

24
Nekto

J'ai essayé toutes les 3 des suggestions ci-dessus sans succès. Au cas où quelqu'un d'autre finirait ici à chercher une solution, j'ai trouvé ceci et cela fonctionne très bien:

Poussoir https://github.com/noodlewerk/NWPusher

62
LunaCodeGirl

Vous devriez essayer la branche de PushMeBaby, cela a fonctionné pour moi.

5
Helge Staedtler

Si vous souhaitez prendre en charge l'authentification basée sur les certificats et les jetons avec APNS, vous pouvez essayer Notifications push

 enter image description here

5
onmyway133

Qu'en est-il de curl:

curl -d '{"aps":{"alert":"This is a test notification"}}' --cert YourCertificate.pem:YourPassword -H "apns-topic: com.example.yourapp" --http2  https://api.development.Push.Apple.com/3/device/YourDeviceToken

Vous avez d’abord besoin de curl avec http2 support.
Et vous devez convertir votre certificat Push au format pem en utilisant openssl.

5
erkanyildiz

Essayez cette application en ligne, grâce à laquelle vous pouvez coller le jeton de votre périphérique et fournir le certificat. Vous pouvez ainsi envoyer une notification Push à tout périphérique et vous permettre de personnaliser également les données. http://pushmebaby.herokuapp.com

4
user1834305

Vous pouvez utiliser le testeur APNS, c’est un très bon outil pour tester APNS à partir de Mac Machinelink pour télécharger this software . 

1.Certificat APNS (fichier .cer) 2.Clé de périphérique du périphérique iOS de l'utilisateur

2
Tarun Seera

PushMeBaby est gelé lorsque je teste iOS10 dans Xcode8. Essayez NWPusher, https://github.com/noodlewerk/NWPusher . Un outil simple et convivial avec une interface graphique.

1
Victor Choy

Si vous google, vous verrez un certain nombre de sites Web qui le font . J'utilise généralement/ https://www.apnstester.com et https://www.pushty.com

0
nupadhyaya

J'ai créé un petit script pour le faire 

import json
import jwt
import time

from hyper import HTTPConnection

ALGORITHM = 'ES256'

# fill these items
APNS_KEY_ID = ''
TEAM_ID = ''
BUNDLE_ID = ''

# put path to p8 file
APNS_AUTH_KEY = ''

# put device token id (of the notification receiver)
REGISTRATION_ID = ''

# let's do the magic :)
f = open(APNS_AUTH_KEY)
secret = f.read()

token = jwt.encode(
    {
        'iss': TEAM_ID,
        'iat': time.time()
    },
    secret,
    algorithm= ALGORITHM,
    headers={
       'alg': ALGORITHM,
        'kid': APNS_KEY_ID,
   }
)

path = '/3/device/{0}'.format(REGISTRATION_ID)

equest_headers = {
'apns-expiration': '0',
'apns-priority': '10',
'apns-topic': BUNDLE_ID,
'authorization': 'bearer {0}'.format(token.decode('ascii'))
}

connection = HTTPConnection('api.development.Push.Apple.com:443')

# put the payload you need
payload_data = {
'aps': {
 'content-available': '1',
 },
}
payload = json.dumps(payload_data).encode('utf-8')

connection.request(
'POST',
path,
payload,
headers=request_headers
)
resp = connection.get_response()

print(resp.status)
print(resp.read())

https://Gist.github.com/IvanivOleg/7ba4072128b2c05a068a6826be68a3d3

0
Oleshko