在C#后端项目中,向Android和iOS设备发送Push消息通知,本质是通过HTTP请求调用对应平台的推送网关。Android通常使用Firebase Cloud Messaging(FCM),iOS使用Apple Push Notification service(APNs)。下面分别说明实现方式。

一、C#向Android发送FCM推送
FCM提供了基于HTTP的接口,服务端只需携带服务器密钥,向固定地址发送JSON即可。以下示例展示用HttpClient发送一条通知。
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class FcmPush
{
static async Task SendAsync()
{
// FCM服务器密钥,从Firebase控制台获取
string serverKey = "你的_FCM_服务器密钥";
// 目标设备注册令牌
string deviceToken = "安卓设备_token";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "key=" + serverKey);
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");
// 构造请求体
string body = "{"to":"" + deviceToken + "","notification":{"title":"你好","body":"这是C#发的推送"}}";
var content = new StringContent(body, Encoding.UTF8, "application/json");
// 发送POST请求
var resp = await client.PostAsync("https://fcm.googleapis.com/fcm/send", content);
string result = await resp.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
}
二、C#向iOS发送APNs推送
iOS推送需要用到证书或Token认证,这里以Token方式(JWT)为例,避免管理p12证书。请求必须带授权头,并发送到api.push.apple.com。
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
class ApnsPush
{
static async Task SendAsync()
{
// 设备token,来自iOS客户端注册
string deviceToken = "iOS设备_token";
// 自行生成的JWT授权令牌
string jwt = "你的_APNs_JWT";
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", jwt);
// APNs要求指定主题,一般是App的bundle id
client.DefaultRequestHeaders.TryAddWithoutValidation("apns-topic", "com.example.app");
string payload = "{"aps":{"alert":{"title":"你好","body":"C#发来的iOS推送"},"sound":"default"}}";
var content = new StringContent(payload, Encoding.UTF8, "application/json");
string url = "https://api.push.apple.com/3/device/" + deviceToken;
var resp = await client.PostAsync(url, content);
Console.WriteLine(resp.StatusCode);
}
}
}
三、统一封装建议
实际项目中可以把上述逻辑封装成服务类,通过配置区分平台:
- 使用配置项保存FCM密钥与APNs的JWT、topic
- 提供SendToAndroid与SendToiOS两个方法
- 记录推送返回状态,处理401、400等错误
常见错误对照
| 平台 | 状态码 | 含义 |
|---|---|---|
| Android | 401 | 服务器密钥无效 |
| iOS | 403 | JWT或topic不正确 |
| 两者 | 400 | 请求体JSON格式错误 |
四、小结
用C#发送手机推送并不复杂,关键是理解FCM与APNs的认证和报文结构。上面的代码均为最小可运行示例,你在真实环境替换令牌与证书后即可使用。若需要批量推送,建议引入消息队列控制发送频率。
C#消息推送Android_iOS修改时间:2026-07-27 01:09:25