일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- APNS
- Java
- graphql
- 웹사이트성능
- 자바스크립트
- 카프카
- 푸시
- GCM 번역
- nginx
- JPA
- notification
- 웹사이트 성능
- 카프카 트랜잭션
- Design Pattern
- git
- 성능
- kafka
- 웹사이트최적화기법
- gcm 푸시 번역
- ddd
- 페이스북 번역
- Push
- nginx설정
- php
- 디자인패턴
- GCM
- 도메인 주도 개발
- 푸시 번역
- nginx설치
- Today
- Total
간단한 개발관련 내용
[APNs] Simple Sender by Python 본문
Python 으로 간단하게 만들어본 테스트 푸시 발송 기능.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import socket, ssl, json, struct, time
if __name__ == '__main__':
# host
apnsHost = 'gateway.push.apple.com'
# port
apnsPort = 2195
# dictionary type
apnsHostPort = (apnsHost, apnsPort)
# certifated file
certFile = 'apns_production.pem'
# device Token
apnsToken = 'abcedfg0123456789'
# notification payload
apnsPayload = {
'aps':{
'alert': '테스트푸시 123 abc'.decode('UTF-8'),
'sound': 'pushSound.caf',
'content-available': 1,
},
'extra':{
'param1':0,'param2':'test'
},
'data':{
'title':'a',
'body':'b'
}
}
apnsPayload = json.dumps(apnsPayload, ensure_ascii=False, separators=(',',':')).encode('UTF-8')
# apnsPayload = json.dumps(apnsPayload)
apnsToken = apnsToken.decode('hex') # python 2
# apnsToken = apnsToken.replace(' ','')
# apnsToken = apnsToken.decode('hex') # python 3
format = '!BLLH32sH%ds' % len(apnsPayload)
# format = '!BH32sH%ds' % len(apnsPayload)
expiry = int(time.time()) + 60*60*24 # item['expire_date']
packet = struct.pack(format, 1, 0, expiry, 32, apnsToken, len(apnsPayload), apnsPayload)
# packet = struct.pack(format, 0, 32, apnsToken, len(apnsPayload), apnsPayload)
print "-- result %s " % packet
# sslSock = ssl.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM), certfile = config.get('ios', 'cert'))
sslSock = ssl.wrap_socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM), certfile = certFile)
sslSock.connect(apnsHostPort)
sslSock.write(packet)
sslSock.close()