首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何发送APNS发送通知。它可以从asp.net中的本地主机运行,但当我们在Windows服务器中托管应用程序接口时失败

发送APNS通知是指向iOS设备发送推送通知,APNS是Apple Push Notification Service的缩写,是苹果提供的用于向iOS设备发送推送通知的服务。

在ASP.NET中发送APNS通知,可以通过以下步骤实现:

  1. 获取APNS证书:首先,需要在Apple开发者账号中创建一个App ID,并生成一个推送证书(.p12格式)。该证书用于与APNS建立安全连接,并向设备发送推送通知。
  2. 配置服务器环境:将APNS证书安装到Windows服务器中,确保服务器可以访问APNS服务器。可以使用OpenSSL工具将.p12证书转换为.pem格式,以便在Windows服务器上使用。
  3. 编写发送代码:使用C#编写发送APNS通知的代码。可以使用第三方库如apnsharpPushSharp来简化开发过程。以下是一个示例代码:
代码语言:csharp
复制
using System;
using System.Security.Cryptography.X509Certificates;
using System.Net;
using System.Net.Sockets;

public class APNSender
{
    private static string apnsHost = "gateway.push.apple.com";
    private static int apnsPort = 2195;
    private static string certificatePath = "path/to/certificate.pem";
    private static string certificatePassword = "certificate_password";

    public static void SendNotification(string deviceToken, string message)
    {
        X509Certificate2 certificate = new X509Certificate2(certificatePath, certificatePassword);

        TcpClient client = new TcpClient(apnsHost, apnsPort);
        SslStream sslStream = new SslStream(client.GetStream());
        sslStream.AuthenticateAsClient(apnsHost, new X509CertificateCollection() { certificate }, System.Security.Authentication.SslProtocols.Tls, false);

        byte[] payload = GeneratePayload(deviceToken, message);
        byte[] notification = GenerateNotification(payload);

        sslStream.Write(notification);
        sslStream.Flush();

        // 处理响应
        byte[] response = new byte[6];
        sslStream.Read(response, 0, response.Length);

        // 关闭连接
        sslStream.Close();
        client.Close();
    }

    private static byte[] GeneratePayload(string deviceToken, string message)
    {
        // 构造推送通知的Payload
        // 可以设置标题、内容、声音、角标等信息
        // 参考苹果官方文档:https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification
        throw new NotImplementedException();
    }

    private static byte[] GenerateNotification(byte[] payload)
    {
        // 构造推送通知的格式
        // 参考苹果官方文档:https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/generating_a_remote_notification
        throw new NotImplementedException();
    }
}
  1. 调用发送代码:在ASP.NET应用程序中调用发送代码,传入设备标识符(Device Token)和要发送的消息。可以在用户注册或登录时获取设备标识符,并将其与用户关联起来。
代码语言:csharp
复制
string deviceToken = "device_token";
string message = "Hello, World!";

APNSender.SendNotification(deviceToken, message);

需要注意的是,发送APNS通知需要确保服务器可以访问APNS服务器,并且证书的有效期没有过期。此外,还需要处理发送过程中可能出现的异常情况,如证书错误、连接超时等。

推荐的腾讯云相关产品:腾讯云移动推送(https://cloud.tencent.com/product/tpns)可以帮助开发者快速实现移动设备的推送功能,支持iOS和Android平台。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

React Native推送通知:完整操作指南

在这篇文章我们将看到如何在React Native应用创建和发送推送通知。 什么是推送通知? 推送通知应用程序发送到已安装该应用用户消息或警报。...这里有一个图表,简化了通知服务如何与设备进行通信: 涉及到React Native设置推送通知,有几种设置方式: 原生平台特定通知服务(FCM/APNS) Expo推送通知服务和其他云服务 像...新用户打开应用时,这个独特令牌将会被生成,所以我们可以服务器存储这些令牌,并以编程方式向所有注册设备发送通知。将令牌保存在某处——我们很快就会用它来测试通知。...使用Expo发送本地通知 某些情况下,开发者不需要远程服务器发送通知。一个例子可以是音乐播放器,一首歌曲正在播放应用需要显示一个通知某些情况下,开发者不需要远程服务器发送通知。...其中一个例子可以是音乐播放器,播放音轨应用需要显示一个通知: 以下代码块展示了如何创建一个本地通知: import { StyleSheet, Text, View, Button } from

1.2K10
  • iOS Push技术

    离线push是需要经过苹果APNs服务器可以推送到某台设备某个APP上,这是和本地push本质区别。push与设置是否打开“通知”有关。...它与其他推送区别在于允许应用收到通知后在后台(background)状态下运行一段代码,可用于服务器获取内容更新。...本地推送是由App自己设定,并且发送给安装此App这台设备,属于一对一对应关系。比较典型应用是闹钟类似的场景。该push与设置是否打开“通知”有关。...,我们可以看到这里设置为66: 4.3 处理本地push ( iOS10以前) 1)App没有启动情况下处理本地push 这种情况下,点击通知,会启动App,而在App...:NSDictionary *)launchOptions,然后lauchOptions获取App启动原因,若是因为本地通知,则可以App启动对App做对应操作,比方说跳转到某个画面等等。

    1.8K30

    iOS14开发- 通知

    iOS 通知主要分为 2 种,本地通知和远程通知本地通知 使用步骤 导入UserNotifications模块。 申请权限。...联网状态下,所有设备都会与 Apple 服务器建立长连接,因此不管应用是打开还是关闭情况,都能接收到服务器推送远程通知。...(图中步骤 4) 要推送通知应用服务器按照 App 相关信息找到存储 deviceToken,将通知和 deviceToken 发送APNs。...如果正常获取到 deviceToken,即表示注册成功,可以进行远程通知推送,最后需要将其发送应用服务器。注意: App 重新启动后,deviceToken 不会变化。...如果正常获取到 deviceToken,即表示注册成功,可以进行远程通知推送,最后需要将其发送应用服务器通知测试。

    1.7K31

    iOS Push详述,了解一下?

    离线push是需要经过苹果APNs服务器可以推送到某台设备某个APP上,这是和本地push本质区别。push与设置是否打开“通知”有关。...它与其他推送区别在于允许应用收到通知后在后台(background)状态下运行一段代码,可用于服务器获取内容更新。...本地推送是由App自己设定,并且发送给安装此App这台设备,属于一对一对应关系。比较典型应用是闹钟类似的场景。该push与设置是否打开“通知”有关。...push 这种情况下,点击通知,会启动App,而在App,开发人员可以通过实现AppDelegate方法:- (BOOL)application:(UIApplication)application...经过1年半内部运营,腾讯内部应用iOS审核通过率平均35%提升到90%+。 现将腾讯内部产品过审经验,以线上工具形式共享给各位。WeTest腾讯质量开放平台上可以在线使用。

    4.5K60

    WCF,Net remoting,Web service

    由于WCF完全是由托管代码编写,因此开发WCF应用程序与开发其它.Net应用程序没有太大区别,我们仍然可以像创建面向对象应用程序那样,利用WCF来创建面向服务应用程序。    ...应用程序可以运行Windows操作系统下,也可以运行在其他操作系统,如Sun Solaris,HP Unix,Linux等等。    ...二 WebService运行机理 首先客户端服务器到WebServiceWSDL,同时客户端声称一个代理类(Proxy Class), 这个代理类负责与WebService服务器进行Request....NET Remoting 使您能够在任何类型应用程序(包括 Windows 窗体、托管 Windows 服务、控制台应用程序或 ASP.NET 辅助进程)灵活地托管远程对象。...运行于沙箱(如下载 Windows 窗体应用程序)客户端连接到系统ASP.NET Web 服务是较简单选择,因为不需要更改安全性策略。

    1.4K50

    了解iOS消息推送一文就够:史上最全iOS Push技术详解

    这个功能与苹果系统无关,是我们自己APP开发一种功能,该push与设置是否打开“通知”无关。 这里以iOS Qzone为例,APP在前台,自己发说说被点赞了,收到在线push如下: ?...离线push是需要经过苹果APNs服务器可以推送到某台设备某个APP上,这是和本地push本质区别。push与设置是否打开“通知”有关。...它与其他推送区别在于允许应用收到通知后在后台(background)状态下运行一段代码,可用于服务器获取内容更新。...本地推送是由App自己设定,并且发送给安装此App这台设备,属于一对一对应关系。比较典型应用是闹钟类似的场景。该push与设置是否打开“通知”有关。...4.3 处理本地push ( iOS10以前) 1)App没有启动情况下处理本地push 这种情况下,点击通知,会启动App,而在App,开发人员可以通过实现AppDelegate方法:- (

    22.1K30

    ASP.NET5 Beta8可用性

    此本机IIS模块管理外部应用程序主机过程发起(在此情况下dnx.exe)和IIS请求到托管进程路由。 简化模型到一个托管选项(仍支持同一场景)用于开发人员代码和测试更少东西。...新模式其他好处包括: IIS程序池不需要运行任何托管代码(你可以字面上将其配置为不加载CLR的话) 现有的ASP.NET Windows组件并不需要安装在Windows服务器运行 现有的...) 统一服务故事 统一启动故事(无奇AspNetLoader.dllbin文件夹) 你会发现,Visual StudioASP.NET 5项目模板已被更新,包括应用程序wwwroot...Visual Studio手柄设置DNX_PATH环境变量指向适当DNX版本为您应用程序。 您发布应用程序web.config流程路径更新为指向您应用程序定义“网络”命令。...您可以选择使用不同命令运行DNU发布使用,而不是--iis命令选项。 有关这些更改IIS托管模式详细信息,请参见相应公告。 本地ASP.NET 5现在已经内置了对本地化支持。

    1.8K160

    iOS 推送手机消息背后技术

    作者:allenzzhao,腾讯  IEG运营开发工程师 消息推送我们几乎每天都会用到,你知道iOS消息推送是如何实现吗?...开发者通过调用iOS系统方法就可以发起本地消息推送,例如我们最常见闹钟应用,App能够根据本地存储闹钟信息直接发起本地通知,因此即使没有网络也能收到闹钟提醒。...苹果APNs服务是基于deviceToken实现,因此需要将设备deviceToken发送我们业务服务器,用于后续消息推送。...APNs服务器返回证书,供业务方服务器校验。 业务方服务器提供自己推送证书,供APNs服务器校验。...APNs服务器验证业务方服务器提供推送证书无误后,TLS连接就已经建立完成,之后业务方服务器可以直接向APNs发送消息推送请求了。

    3.9K103

    iOS远程消息推送

    前言 iOS消息推送分两种,本地推送和远程推送。本地推送是由本地应用触发,是基于时间通知形式,不通过网络,直接安装应用后就可以接到通知,一般用于闹钟定时、待办事项等提醒功能。...(4)服务端拿到DeviceToken以后,有消息要推送,服务端使用证书文件,向苹果APNS服务器发起一个SSL连接。连接成功之后,发送一段JSON串,该JSON串包含推送消息类型及内容。...(5)苹果APNS服务器得到推送消息(JSON串)以后,向App发送通知消息,使得App回调函数application:(UIApplication*)application didReceiveRemoteNotification...包含了系统提醒用户通知到达方式,还可以添加自定义数据。即通知主要传递数据为Payload。...aps 可以包含以下字段一个或多个: Alert:其内容可以为字符串或者字典,如果是字符串,那么将会在通知显示这条内容。 badge:其值为数字,表示通知到达设备应用角标变为多少。

    4.5K20

    Docker最全教程——理论到实战(二)

    事实上,.NET Framework 支持Docker运行,但是仅能在windows 容器运行,这并不符合我们预期,因此,本篇我们只侧重于讨论ASP.NET Core和Docker。...使用 ASP.NET Core,我们可以: 建置 Web 应用程序和服务、IoT 应用和移动后端。 能够 Windows、macOS 和 Linux 上进行开发和运行。部署到云或本地。...但是,Windows 镜像仅能在 Windows 主机运行,Linux 镜像可以 Linux 主机Windows 主机运行(到目前为止,使用 Hyper-V Linux VM),其中主机是指服务器或...大部分情况下,我们推荐使用反向代理服务器。主要是有以下好处: 可以限制所承载应用公开公共外围应用可以提供额外配置和防护层。 可以更好地与现有基础结构集成。...主要用于向 Windows 事件日志发送日志输出。 关于ASP.NET Core相关内容,我们先介绍到这里。接下来我们主要是围绕Docker开发工作流程进行讲解。

    1.5K30

    Docker最全教程——理论到实战(二)

    事实上,.NET Framework 支持Docker运行,但是仅能在windows 容器运行,这并不符合我们预期,因此,本篇我们只侧重于讨论ASP.NET Core和Docker。...使用 ASP.NET Core,我们可以: 建置 Web 应用程序和服务、IoT 应用和移动后端。 能够 Windows、macOS 和 Linux 上进行开发和运行。...但是,Windows 镜像仅能在 Windows 主机运行,Linux 镜像可以 Linux 主机Windows 主机运行(到目前为止,使用 Hyper-V Linux VM),其中主机是指服务器或...使用 Kestrel 等 Web 服务器实现时,ASP.NET Core 可以控制托管不同服务器技术上启动过程和环境。...主要用于向 Windows 事件日志发送日志输出。 关于ASP.NET Core相关内容,我们先介绍到这里。接下来我们主要是围绕Docker开发工作流程进行讲解。

    1.4K30

    个推你应该这样用

    前言:     说到这个远程推送,大家知道应该都挺多用到估计极光和个推要占一很大部分,这篇博客重点说就是个推使用,个推官网链接在这里,集成是比较方便,你可以直接使用Cocoapods...集成,待会再下面命令行也会给大家分享出来,这我们还会提到一个推送流程,还有SDK一些使用以及使用过程我们需要注意地方:     先看看个推推送流程图: image.png    ...集成建议利用Cocoapods集成,建议还是集成这个无IDFA版本,下面是命令行,至于为什么建议集成这个版本,个推文档也有这样一段话:“ App 内无广告情况下还是建议开发者使用获取 IDFA...App 在前台运行),个推服务器会直接给 App 发送透传消息,不发送苹果APNS消息,可以更快把消息发送到手机端;SDK 离线状态 (停止 SDK 或 App 后台运行 或 App 停止),个推服务器会给...App 发送苹果 APNs 消息,同时保存个推离线消息, SDK 在线后,SDK 会获取所有的个推透传消息,offLine 字段就是表明该条消息是否为离线消息。

    2K90

    ASP.NET Core 3.0 新增功能

    JavaScript 代码捕获到字符串并准备将其发送服务器,它可以使用 subject.next 方法来处理字符串。...使用 .NET Core 通用主机(HostBuilder),可以更好地将 ASP.NET Core 应用程序与其他非特定与 Web 服务器方案集成。...过滤器和特性 (attribute) 可以被放置控制器方法上。 有关更多信息,请参见 ASP.NET Core 路由。 运行状况检查 运行状况检查通过通用主机使用终结点路由。...IIS 改进了错误报告 现在, IIS 托管 ASP.NET Core 应用程序时启动错误会生成更丰富诊断数据。这些错误会在适用情况下使用堆栈跟踪,报告给 Windows 事件日志。...有关更多信息,请参见: 作为 Windows 服务运行 .NET Core 辅助角色 (.NET Core Workers as Windows Services) ASP.NET Core 中使用托管服务实现后台任务

    6.7K30

    JPush相关概念

    本地通知 本地通知API不依赖于网络,无网条件下依旧可以触发;本地通知定时时间是自发送算起,不受中间关机等操作影响。 本地通知与网络推送通知是相互独立,不受保留最近通知条数上限限制。...本地通知适用于特定时间发出通知,如一些Todo和闹钟类应用每周、每月固定时间提醒用户回到应用查看任务。...如果一个别名被指定到了多个用户,给指定这个别名发消息服务器端API会同时给这多个用户发送消息。 举例:一个用户要登录游戏中,可能设置别名为 userid。...开发者可以通过控制台(官网)设置好用户分群之后,控制台推送指定该分群名称或使用API调用该分群id发送。...big_pic_path string 可选 大图片通知栏样式 style = 3 可用,可以是网络图片 url,或本地图片 path,目前支持.jpg和.png后缀图片。

    89320

    ASP.NET CoreKestrel服务器

    如果你将你应用部署公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。...另一个需要反向代理场景是,你有多个需要在单独服务器运行并分享同一端口应用。因为Kestrel不支持多进程间分享同一端口,所以应用并不能直接和Kestrel合作。...当你某个端口上配置Kestrel运行侦听,不算主机如何标识,Kestrel会为该端口处理所有的流量。反向代理可以为多个应用共享唯一端口并将流量发送给Kestrel。...即使不需要反向代理服务器,使用它也可以简化负载均衡和SSL设置 -- 只要你反向代理服务器需要SSL证书,并且该服务器可以和你应用在内部网通过普通HTTP进行通信。...on a Mac Using Visual Studio Code 本教程本地仅使用Kestrel,将该应用部署到Azure之后,它将在Windows上使用IIS作为反向代理服务器

    5K50

    推送-远程通知推送教程

    如果所有步骤进行顺利,系统将会向你提供一个 device token,你可以认为是当前设备”地址”。 WenderCast应用你需要用在应用启动后立即注册远程推送。...deviceToken值就是这个过程得到结果。它是由APNs服务器提供用来标识当前设备当前App。发送推送通知时候,App用deviceToken作为“地址”传递到当前设备。...发送通知APNS会为每一个开启了推送通知设备保持一个高质量服务(Quality of Service)队列。这个队列大小是1,所以如果你同时发送多个通知,最后一个通知才会被发送。...作为备选项,推送通知应该仅仅只是指示当前有新内容可以获取并让App服务器下载这些新内容。WenderCast应用在这方有一些局限性,因为并没有合适服务端。...可交互通知是你通过注册通知设置 categories 定义.每一个通知分类都可以有多个预先自定义交互。 一旦完成注册,就可以发送这个分类通知.接收到通知相应交互就可以被用户获取。

    4K30

    通讯协议与即时通讯

    目前苹果APNS和谷歌GCM都是基于此方案来实现推送服务; 3.SMS方式 服务端有新内容时候,会发送一条类似短信指令传给客户端,客户端收到后服务端下载新内容。...2.XMPP XMPP是一种基于标准通用标记语言子集XML协议,继承了XML环境灵活发展性。因此,基于XMPP应用具有超强可扩展性。...而且推送数量较大如何处理并发是十分考验后台人员技术水平。...Socket是网络上运行两个程序间双向通讯一端,可以接受请求,也可以发送请求,利用它可以较为方便编写网络上数据传递。...服务端发出一个Ping,客户端没有约定时间内返回响应ack,则认为客户端已经不在线,这时我们Server端会主动断开Scoket连接,并且改由APNS推送方式发送消息。

    2.2K30

    【翻译】没有安装ASP.NET MVC3服务器运行ASP.NET MVC3程序-scottgu

    只要您网站托管服务提供商支持.NET 4,那么您现在就可以构建和部署ASP.NET MVC3应用程序了 - 不用托管供应商做任何事。 下面的文章介绍如何启用此功能。...: 上述错误表示, 至少有一个运行ASP.NET MVC 3所需程序集GAC找不到。...方法2:基于\ Bin目录引用ASP.NET MVC组件 您项目可以使用另一种方法 Web应用程序\bin目录中分发和引用ASP.NET MVC3程序集。...相反,你只要复制你web应用程序(bin目录包含MVC3组件)到 .NET4服务器上,它就会运行。...基于Windows网络托管价格现在是非常符合成本效益, 共享主机低至2.75/月,虚拟主机提供报价23/月。 上述主机都能通过使用\ bin部署方法来运行ASP.NET MVC 3。

    4.2K10

    如何构建一套高可用移动消息推送平台?

    推送过程是异步应用服务端发送到推送服务可以得知发送是否成功,但是第三方推送服务下发到 APP ,无法得知客户端是否接收到。...对于推送过程可能出现异常情况,总结如下: 调用第三方推送服务接口,可能出现调用失败情况;此时需要标记消息状态为发送失败,留待重发。...图 4:消息状态机 重发机制 消息重发主要存在三种场景:系统启动,查询所有的发送失败发送成功未收到客户端回执消息,加载到推送队列重发;系统运行时,后台线程定时查询需要重发消息,进入推送队列;...使用第三方推送,如果 iOS 应用在前台运行,那么将通过第三方推送维护长连接,以透传方式直接下发到 APP,称为应用内消息;而 APP 在后台,则第三方推送将消息推送到 APNs,由 APNs...通过 APNs 推送,手机收到消息后将在顶部通知栏出现相关推送内容,这一行为是系统级别的,APP 无法控制。

    3.2K20
    领券