Django实现iOS设备简单推送通知功能求助(附Android实现代码)
iOS 推送通知最简实现(适配Django环境)
刚好你已经有了Android端的requests实现,我给你写一个风格一致的iOS推送代码,直接用你已有的Certificates.pem文件:
import requests import json from django.conf import settings # 用这个获取项目根目录路径更稳妥 def send_push_notif_ios(device_token, title, msg): # 替换成你的iOS App的Bundle ID APNS_TOPIC = "com.yourcompany.yourapp" # 选择环境:生产环境用api.push.apple.com,沙箱测试用api.sandbox.push.apple.com APNS_URL = f"https://api.push.apple.com/3/device/{device_token}" # 构造APNs要求的推送 payload payload = { "aps": { "alert": { "title": title, "body": msg }, "sound": "default" # 可选,添加默认提示音 } } headers = { "Content-Type": "application/json", "apns-topic": APNS_TOPIC } # 用cert参数传入你的pem证书,这里用settings.BASE_DIR确保路径正确 cert_path = f"{settings.BASE_DIR}/Certificates.pem" try: response = requests.post( APNS_URL, data=json.dumps(payload), headers=headers, cert=cert_path ) # 可以根据返回状态码做简单的错误处理 if response.status_code == 200: print("iOS推送成功") else: print(f"iOS推送失败,状态码:{response.status_code},响应内容:{response.text}") except Exception as e: print(f"推送请求异常:{str(e)}")
几个关键注意点:
- 环境切换:如果是开发测试阶段,记得把
APNS_URL换成沙箱地址https://api.sandbox.push.apple.com/3/device/{device_token},否则会推送失败 - Bundle ID:
APNS_TOPIC必须和你生成推送证书时用的App Bundle ID完全一致 - 证书路径:用
settings.BASE_DIR拼接路径可以避免因运行环境不同导致的路径错误,确保Django进程能读取到Certificates.pem文件 - 设备令牌:确保传入的
device_token是iOS设备返回的正确令牌,没有多余空格或格式错误
之后你就可以和Android端一样,根据模型里的Device_type判断调用哪个推送函数啦~
内容的提问来源于stack exchange,提问作者Vallabh
相关产品推荐
相关产品推荐

