You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:14:43