it-swarm.it

Come testare la notifica push funziona nella mia applicazione

Nella mia applicazione sto implementando il Push Notification Service.
Ho un server Content Provider, che contiene alcuni prodotti in esso.
Ho generato il certificato client SSL e l'ho allegato al mio profilo di provisioning di sviluppo. Questo profilo è anche aggiunto alla mia applicazione.
Ho scritto il codice all'interno dei metodi delegati (guidato dalla linea guida Apple per l'implementazione della notifica push). Tutto stabilito.

Ora voglio testare la mia domanda se sta trasmettendo la notifica Push come da requisito. Qualche idea su come posso testarlo mi sarebbe di grande aiuto.
Devo aggiungere un nuovo prodotto al server del content provider per testarlo? 

In caso affermativo, quanto prenderà l'APNS per inviare la notifica Push al mio dispositivo?

37
Naved

Una guida molto interessante è pubblicata qui: Programmazione dei servizi di notifica push Apple

E un'applicazione qui: App Mac Mac PushMeBaby che puoi scaricare e utilizzare per inviare notifiche Push ai tuoi dispositivi da un Mac.

APNS invierà la notifica Push al dispositivo non appena il dispositivo sarà disponibile. Se non sbaglio, il tuo dispositivo ping APNS ogni minuto.

24
Nekto

Ho provato tutti e 3 i suggerimenti sopra senza successo. Se qualcun altro finisce qui cercando una soluzione a questo, ho trovato questo e funziona benissimo:

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

62
LunaCodeGirl

Dovresti provare il ramo di PushMeBaby, ha funzionato per me.

5
Helge Staedtler

Se si desidera supportare l'autenticazione basata su certificati e token con APNS, è possibile provare Notifiche push

 enter image description here

5
onmyway133

Che dire di 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

Per prima cosa è necessario curl con il supporto http2.
E devi convertire il tuo certificato Push nel formato pem usando openssl.

5
erkanyildiz

Prova questa applicazione online, attraverso la quale puoi incollare il token del dispositivo e fornire il certificato, quindi invia notifiche push a tutti i dispositivi e ti consente anche di personalizzare i dati. http://pushmebaby.herokuapp.com

4
user1834305

È possibile utilizzare il tester APNS, è un ottimo strumento per testare APNS da Mac Machinelink per scaricare questo software . 2 cose che è necessario fornire per testare la notifica Push 

1. Certificato APN (file .cer) 2. Token di dispositivo del dispositivo iOS dell'utente

2
Tarun Seera

PushMeBaby viene congelato quando eseguo il test di iOS10 su Xcode8. Prova NWPusher, https://github.com/noodlewerk/NWPusher . Uno strumento semplice e amichevole con GUI.

1
Victor Choy

Se tu google vedrai un certo numero di siti web che fanno questo . Di solito uso https://www.apnstester.com e https://www.pushty.com

0
nupadhyaya

Ho creato un piccolo script per farlo 

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