IOS APNS 推送,利用HTTP2.0 特性以及异步实现多用户推送
- 原生的
apns
不支持直接多用户推送,如果单纯的使用HTTP2.0
, 而不考虑其特性直接利用循环推送会非常慢(每个推送大概会花费1秒左右的时间)
httpx
,python中,支持http2.0
请求的第三方包。简单教程
http2.0
的特性,这里就不仔细说明了,可以自行查询。
- 以下提供了
Django
和aiohttp
两个版本的服务器代码,可自行选择。(django
只支持3.0以上版本)
import httpx
import asyncio
async def http2conn(device_token, client, content):
r = await client.post(f"/3/device/{device_token}", json=content)
logger.info('ios push: ' + device_token)
logger.info(r.status_code)
async def ios_push(title, text, product, product_id, device_tokens='', **kwargs):
"""
kwargs={'product':'', 'product_id': '产品id', 'device_token': 'device_token