J'ai écrit un article similaire la dernière fois, Je l'ai écrit sans expérimenter, et comme je l'ai essayé et que cela n'a pas fonctionné, j'écrirai à nouveau l'article avec des corrections!
Envoyer des notifications push aux applications iOS avec Python
Installez apns avec pip après avoir créé un environnement virtuel avec Virtualenv
$ pip install apns
Exportez un fichier pem pour les notifications push du trousseau.
Quant à la clé privée, si vous utilisez celle qui porte le même nom, vous pouvez la réutiliser, alors gardez-la avec le même nom. 2. De la même manière pour la clé privée, exportez uniquement la ** clé privée ** au format p12. 3. Convertissez chacun des trois fichiers pem en fichier pem avec la commande suivante
$ openssl pkcs12 -in secret.p12 -out secret.pem -nodes -clcerts
Veuillez changer le nom afin que vous puissiez le voir. Veuillez définir sans mot de passe lors de l'exportation.
Je mets en place un fichier pem pour Developer.
single.py
# coding: utf-8
import time
from apns import APNs, Payload
apns = APNs(use_sandbox=True, cert_file='develop.pem', key_file='secret.pem')
token_hex = '45f9f318ac6506742a54a3b8bb6493c72cdad9afe2c154d5295e9db15cdf83a7'
content = "tester!!"
content = content.decode('utf-8')
payload = Payload(alert=content, sound="default", badge=1)
apns.gateway_server.send_notification(token_hex, payload)
cert_file
est la clé publique. key_file
est la clé privée.
Cette fois, j'ai testé celui donné à DeployGate, j'ai donc défini le fichier pem pour Distribution.
multi.py
# coding: utf-8
import time
from apns import APNs, Frame, Payload
apns = APNs(use_sandbox=False, cert_file='distribution.pem', key_file='secret.pem', enhanced=True)
token_hex = ['417a7b3329c86240b159b816313a3ae51ff9059b98ac29bc7cbcbd36dd41e2a9',
'446d18e7a621d371a8683d0d33bf9080091efbf693f5b591f9ec307a1e627d46']
message = "message! !!"
message = message.decode('utf-8')
payload = Payload(alert=message, sound="default", badge=1, custom={'uri': 'https://nnsnodnb.moe'})
frame = Frame()
identifier = 1
expiry = time.time() + 3600
priority = 10
for token in token_hex:
frame.add_item(token, payload, identifier, expiry, priority)
apns.gateway_server.send_notification_multiple(frame)
Lors de l'envoi vers plusieurs terminaux, il semble qu'il soit important de définir ʻenhanced dans l'élément de ʻAPNs
.
J'ai oublié de prendre le lien, mais il a été publié sur la question de GitHub dans le package PyAPNs.
De plus, est-il possible de prendre en charge le push avec des images d'iOS10 en définissant mutable_content = True
sur Payload
de la même manière?
Je ne peux pas afficher les icônes car il est actuellement en cours de développement pour un usage privé, mais j'ai reçu une notification comme celle-ci!
Vous pouvez intégrer JSON à la place de custom
, il semble donc que vous puissiez faire quelque chose comme ça assez facilement!
Dépôt GitHub.
nnsnodnb/APNs-Push-Notification
Paquet utilisé cette fois
Apparemment, il ne prend pas en charge Python3, donc je dois faire quelque chose moi-même. Même si c'est 2to3, cela ne change pas pour une raison quelconque! ??
Recommended Posts