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

如何发送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.6K10
  • 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与设置中是否打开“通知”有关。...,我们可以看到这里设置为66: 4.3 处理本地push ( iOS10以前) 1)App没有启动情况下处理本地push 这种情况下,当点击通知时,会启动App,而在App...:NSDictionary *)launchOptions,然后从lauchOptions中获取App启动的原因,若是因为本地通知,则可以App启动时对App做对应的操作,比方说跳转到某个画面等等。

    1.8K30

    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的运行机理 首先客户端从服务器的到WebService的WSDL,同时在客户端声称一个代理类(Proxy Class), 这个代理类负责与WebService服务器进行Request....NET Remoting 使您能够在任何类型的应用程序(包括 Windows 窗体、托管的 Windows 服务、控制台应用程序或 ASP.NET 辅助进程)中灵活地托管远程对象。...当您从运行于沙箱(如下载的 Windows 窗体应用程序)中的客户端连接到系统时,ASP.NET Web 服务是较简单的选择,因为不需要更改安全性策略。

    1.5K50

    了解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中的方法:- (

    23.9K30

    ASP.NET5 Beta8可用性

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

    1.9K160

    iOS 推送手机消息背后的技术

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

    4K103

    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.8K30

    JPush相关概念

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

    91520

    推送-远程通知推送教程

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

    4K30

    ASP.NET Core的Kestrel服务器

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

    5K50

    【翻译】在没有安装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

    iOS推送APNs

    0、通知 iOS中的推送通知,主要有以下几种推送: 本地通知:iOS在本地发出的通知,功能开发集成在UserNotifications.framework内,常见应用:闹钟提醒。...在线推送:APP在前台时,消息通过自建的网络长连接从服务器推送到应用,常见应用:微信在前台时的消息推送。 APNs:APP未被唤起或者处于后台,通过苹果服务器远程推送消息给应用。...主要流程为: 服务器端将消息先发送到苹果的APNs; 由苹果的APNs将消息推送到客户的设备端; 由iOS系统将接收到的消息分发给相应的App。...每个应用程序实例在向APN注册时都会收到其唯一的deviceToken,然后必须将token转发给它的提供者,推送通知请求中包含设备令牌;APN使用设备令牌来确保仅将通知传递给预期的唯一应用程序设备组合...APN可以出于多种原因发行新的deviceToken: 用户在新设备上安装您的应用 用户从备份中还原设备 用户重新安装操作系统 其他系统定义的事件 4、DeviceToken device token

    3.6K20

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

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

    3.2K20
    领券