推播通知推播通知至用户

推播通知至用户

概述

透过伺服器端发送自订推播通知至指定用户。支援 Apple Push Notification Service(APNs)及 Firebase Cloud Messaging(FCM),可同时推送至 iOS 与 Android 装置。适用于行销推播、系统公告、自订提醒等场景。


API 端点

推播通知至指定用户

向一组指定的用户发送推播通知,支援 iOS 与 Android 平台的通知栏位设定。

POST /push/push2clients

Headers

参数类型必填说明
IM-API-KEYstring您的平台 API 金钥
Content-Typestringapplication/json; charset=utf-8

Post Body

参数类型必填说明
clientsarray目标用户的 Client ID 阵列
payloadobject推播通知内容,包含平台特定栏位

payload 物件栏位

参数类型必填平台说明
typestring共用通知类型,自订分类标记
expirynumberiOS通知过期时间(Unix 时间戳,秒)
alertstring/objectiOS通知提示,可为字串或包含 loc-keyloc-args 的物件
badgenumberiOS应用程式图示上的未读数字
soundstringiOS通知音效档案名称
topicstringiOSAPNs topic,通常为应用程式的 Bundle ID
titlestringAndroid通知标题
bodystringAndroid通知内容
iconstringAndroid通知图示 URL
collapseKeystringAndroid折叠键,相同 key 的通知会合并显示

alert 物件栏位(当 alert 为物件时)

参数类型必填说明
loc-keystring本地化字串的键值
loc-argsarray本地化字串的参数阵列

范例请求

JavaScript(axios)

const response = await axios.post(
  "https://your-app.imkit.io/push/push2clients",
  {
    clients: ["user001", "user002", "user003"],
    payload: {
      type: "marketing",
      alert: "您有一则新的优惠活动,立即查看!",
      badge: 1,
      sound: "default",
      topic: "io.imkit.app",
      title: "限时优惠",
      body: "您有一则新的优惠活动,立即查看!",
      icon: "https://example.com/icon.png",
      collapseKey: "promo_2026"
    }
  },
  {
    headers: {
      "IM-API-KEY": process.env.IM_API_KEY,
      "Content-Type": "application/json; charset=utf-8"
    }
  }
);

使用本地化 alert 物件

const response = await axios.post(
  "https://your-app.imkit.io/push/push2clients",
  {
    clients: ["user001"],
    payload: {
      alert: {
        "loc-key": "NEW_MESSAGE_NOTIFICATION",
        "loc-args": ["张小明", "您好,请问有空吗?"]
      },
      badge: 3,
      sound: "default",
      title: "新讯息",
      body: "张小明:您好,请问有空吗?"
    }
  },
  {
    headers: {
      "IM-API-KEY": process.env.IM_API_KEY,
      "Content-Type": "application/json; charset=utf-8"
    }
  }
);

cURL

curl -X POST "https://your-app.imkit.io/push/push2clients" \
  -H "IM-API-KEY: your_api_key" \
  -H "Content-Type: application/json; charset=utf-8" \
  -d '{
    "clients": ["user001", "user002"],
    "payload": {
      "type": "alert",
      "alert": "系统维护通知:今晚 23:00 将进行例行维护",
      "badge": 1,
      "sound": "default",
      "title": "系统公告",
      "body": "系统维护通知:今晚 23:00 将进行例行维护",
      "icon": "https://example.com/icon.png"
    }
  }'

Response

成功回应(200 OK)

{
  "RC": 0,
  "RM": "OK",
  "result": {}
}

请求成功时,伺服器会将推播通知分别发送至 APNs(iOS)与 FCM(Android)。

错误回应

401 Unauthorized - API 金钥无效

{
  "RC": 401,
  "RM": "Unauthorized",
  "error": {
    "code": "INVALID_API_KEY",
    "message": "Invalid or missing API key"
  }
}

400 Bad Request - 缺少必要参数

{
  "RC": 400,
  "RM": "Bad Request",
  "error": {
    "code": "MISSING_PARAMETER",
    "message": "clients and payload are required"
  }
}

使用场景

行销推播

  • 促销活动通知:向特定用户群发送优惠活动、折扣码等行销讯息
  • 个人化推荐:根据用户行为推送个人化的产品推荐

系统通知

  • 维护公告:发送系统维护、版本更新等公告讯息
  • 安全提醒:通知用户帐号异常登入、密码变更等安全事件

自订提醒

  • 排程提醒:发送预约、会议、到期提醒等时间敏感的通知
  • 状态更新:通知用户订单状态变更、审核结果等

注意事项

  • 仅限伺服器端使用:此 API 需使用 IM-API-KEY 进行验证,仅供伺服器端呼叫
  • 双平台推送:系统会同时透过 APNs(iOS)与 FCM(Android)发送推播通知
  • 装置注册:用户必须已注册推播 token,否则通知无法送达
  • 推播配额:请注意 APNs 与 FCM 各自的推播频率限制,避免过度推送
  • alert 栏位:iOS 的 alert 可以是纯字串或包含本地化键值的物件,请根据需求选择适当的格式
  • 折叠通知:Android 的 collapseKey 可用于将相同类型的通知合并,减少用户干扰
© 2026 FUNTEK Software Inc. All rights reserved.