(iOS消息推送原理) 详情

iOS和Android即时通讯开发时后台实时消息推送的原理和区别 开发者通过第三方推送服务提供商将信息直接下发给需要的设备,第三方推送服务提供商与设备建立一条长连接通道,并且将消息路由到APP中(图中的设备1与设备2),对于像设备3这种无网络连接或是没有成功建立长连接通道的设备,会在设备3连网且推送消息没有过期的情况下自动收到由第三方推送服务提供商推送过来的消息,保证消息不会丢失。在这里,你要寄送的快件儿就是你要发的“消息”,送达房间相当于最终“接收消息的App”,顺丰公司在北京的总站点相当于这里提到的“设备”,送达房间的房间号就相当于这个环节里面提到的“包名”。 阅读详情

Push的原理:
这里写图片描述
Push 的工作机制可以简单的概括为下图
这里写图片描述

图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。
APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。

上图可以分为三个阶段。

第一阶段:.net应用程序把要发送的消息、目的iPhone的标识打包,发给APNS。
第二阶段:APNS在自身的已注册Push服务的iPhone列表中,查找有相应标识的iPhone,并把消息发到iPhone。
第三阶段:iPhone把发来的消息传递给相应的应用程序, 并且按照设定弹出Push通知。

从上图我们可以看到。

1、首先是应用程序注册消息推送。

2、 IOS跟APNS Server要deviceToken。应用程序接受deviceToken。

3、应用程序将deviceToken发送给PUSH服务端程序。

4、 服务端程序向APNS服务发送消息。

5、APNS服务将消息发送给iPhone应用程序。

无论是iPhone客户端跟APNS,还是Provider和APNS都需要通过证书进行连接的。下面我介绍一下几种用到的证书。

几种证书:

一、*.certSigningRequest文件

1、生成Certificate Signing Request (CSR):
这里写图片描述

2、填写你的邮箱和Common Name,这里填写为PushChat。选择保存到硬盘。
这里写图片描述

这样就在本地生成了一个PushChat.certSigningRequest文件。

二、生成*.p12文件

1、导出密钥,并输入你的密码。
这里写图片描述

输入你的密码:
这里写图片描述

这样就生成了一个PushChatKey.p12文件。

三、新建一个App ID 和SSL certificate文件

1、用你的付过费的apple帐号登录到iOS Provisioning Portal。新建一个App ID。

 Description:中输入PushChat

 Bundle Seed ID:默认选择Generate New

 Bundle Identifier:输入com.mysoft.PushChat

点击提交

这里写图片描述

这样就会生成下面这条记录:
这里写图片描述

点击配置:
这里写图片描述

出现下面界面,点击继续:
这里写图片描述

这里我们选择前面生成好的PushChat.certSigningRequest文件,点击生成。
这里写图片描述

正在生成
这里写图片描述

生成完毕,我们把它下载下来。命名为aps_developer_identity.cer。
这里写图片描述

点击完成,你会发现状态变成Enabled。
这里写图片描述

到现在为止,我们已经生成了3个文件。

1、PushChat.certSigningRequest

2、PushChatKey.p12

3、aps_developer_identity.cer

现在我们创建一个简单的iPhone应用程序。

1、打开Xcode,选择创建一个View-based Application。命名如下图:
这里写图片描述

2、在PushChatAppDelegate中的didFinishLaunchingWithOptions方法中加入下面代码:

  • (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
    {
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    // Let the device know we want to receive push notifications
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
    (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

    return YES;
    }
    通过registerForRemoteNotificationTypes方法,告诉应用程序,能接受push来的通知。

3、在xcode中运行,会弹出下面的提示框:
这里写图片描述

选择OK。表示此应用程序开启消息通知服务。

在 PushChatAppDelegate.m代码中添加下面方法获取deviceToken :

  • (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
    {
    NSLog(@”My token is: %@”, deviceToken);
    }

  • (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
    {
    NSLog(@”Failed to get token, error: %@”, error);
    }
    获取到的deviceToken,我们可以通过webservice服务提交给.net应用程序,这里我简单处理,直接打印出来,拷贝到.net应用环境中使用。
    发送通知的.net应用程序出来需要知道deviceToken之外,还需要一个与APNS连接的证书。

这个证书可以通过我们前面生成的两个文件中得到。

使用OpenSSL生成.net和APNS通信的证书文件。

1、将aps_developer_identity.cer转换成 aps_developer_identity.pem格式。

openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM

2、将p12格式的私钥转换成pem,需要设置4次密码,这里密码都设置为:abc123。

openssl pkcs12 -nocerts -out PushChat_Noenc.pem -in PushChat.p12

3、用certificate和the key 创建PKCS#12格式的文件。

openssl pkcs12 -export -in aps_developer_identity.pem -inkey PushChat_Noenc.pem -certfile PushChat.certSigningRequest -name “aps_developer_identity” -out aps_developer_identity.p12

这样我们就得到了在.net应用程序中使用的证书文件:aps_developer_identity.p12。

在.net应用程序中发送通知。

有个开源的类库:apns-sharp。

地址是:http://code.google.com/p/apns-sharp/。

我们下载源代码,对里面的JdSoft.Apple.Apns.Notifications做相应的调整就能用了。

我们根据DeviceToken和p12File对JdSoft.Apple.Apns.Notifications.Test代码做相应的调整,如下图。
这里写图片描述

这样就OK了。

效果:

通知的代码:

for (int i = 1; i <= count; i++)
{
//Create a new notification to send
Notification alertNotification = new Notification(testDeviceToken);

            alertNotification.Payload.Alert.Body = string.Format("Testing {0}...", i);
            alertNotification.Payload.Sound = "default";
            alertNotification.Payload.Badge = i;

            //Queue the notification to be sent

if (service.QueueNotification(alertNotification))
Console.WriteLine(“Notification Queued!”);
else
Console.WriteLine(“Notification Failed to be Queued!”);

            //Sleep in between each message

if (i < count)
{
Console.WriteLine(“Sleeping ” + sleepBetweenNotifications + ” milliseconds before next Notification…”);
System.Threading.Thread.Sleep(sleepBetweenNotifications);
}
}
用手机拍的ipad上面的显示:
这里写图片描述
这里写图片描述

总结:这篇文章主要是详细的讲述了ios消息推送机制的实现,如何通过.net应用程序发送消息给ios应用程序。

iOS消息推送机制深入解析与实践指南 在 iOS 生态系统中,消息推送是一项不可或缺的服务,它使得 App 能够在后台接收来自服务器的消息。这一机制增强了用户体验,使用户能够即时获得通知,无论 App 是否正在运行。Apple Push Notification service(APNs)是苹果公司提供的用于支持iOS应用消息推送的服务。在深入了解APNs架构之前,需要先了解其基本组成:Provider:推送服务的提供者,负责与APNs服务器建立连接,发送和管理推送通知。APNs服务器。 阅读详情

相关推荐

iOS 消息推送功能实现与实践

Apple Push Notification Service (APNS) 是苹果公司提供的一项服务,允许开发者向其应用的用户发送通知。不管是提醒用户接收新信息、更新内容,还是提醒应用已经关闭,APNS 都是确保信息能够及时准确传达给用户的关键技术。本章节将简要介绍 APNS 的概念、历史背景和它在现代移动应用中的作用。随着移动设备的普及和技术的发展,用户越来越依赖于移动应用来获取信息和服务。为了在无需打开应用的情况下通知用户有新的信息或事件,推送通知成为了一个不可或缺的功能。

weixin_35706255的博客 1231

App消息推送的原理

文章目录1. 基本概念2. iOS和Android消息推送原理对比2.1 iOS2.2 Android3. Android消息推送原理3.1 操作系统有自身的消息推送功能(系统级别)3.2 三种基本的推送方式:Push、Pull 和 SMS3.3 七种主流的Android消息推送方式 1. 基本概念 目的: 在用户未打开App时,App主动向用户推送服务器最新消息 基本原理: 服务器如何先找到...

蝴蝶少年的博客 2万+

新硬盘到手,在统信UOS或麒麟系统上怎么认?保姆级教程从识别到挂载一步到位

本文提供新硬盘在统信UOS或麒麟KYLINOS系统上的完整配置指南,从识别物理硬盘到挂载全流程详解。通过终端命令如df和lsblk,帮助用户完成硬盘识别、分区、文件系统创建及挂载配置,确保新硬盘顺利投入使用。

weixin_30698297的博客 442

iOS消息推送原理

它是苹果提供的全球推送服务,负责将消息从应用服务器传递到用户的设备。通过以上机制,iOS 消息推送实现了高效、安全的消息传递,同时兼顾用户体验与开发者灵活性。iOS 消息推送(Push Notification)的核心机制基于。用户授权后,系统会向 APNs 注册设备,并生成一个唯一的。应用首次启动时,需向用户请求推送权限(通过。:应用在前台时,推送不会自动展示,需通过。

zhangjikuan89的博客 1672

Windows安装Pytorch3d

pytorch和pytorch3d版本对应关系如下:https://github.com/facebookresearch/pytorch3d/releasescuda和NVIDIA CUB版本对应关系如下:https://github.com/NVIDIA/cub/releases?page=1本人配置如下:GPU:1050TiCUDA:11.1python:3.8。

Snakewood的博客 4285

使用podspec创建iOS插件

概述 在WWDC 2014全球开发者大会上,苹果开放了动态库、App Extension等全新的功能,这为iOS插件化开发带来了可能。在iOS开发中,动态库是iOS提供的一种资源打包方式,可以将代码文件、头文件、资源文件和说明文档等集中在一起,并且可以在运行时进行动态加载。 目前,很多应用越做越复杂,应用程序也显得越来越臃肿。试想一下,如果将一些不常用的功能做成一个插件,然后根据用户的需求从网络中...

xiangzhihong8的专栏 991

iOS消息推送原理和实现总结

一、消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图:1、 Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]);2、 APNS:Apple Push Notification Service[苹果消息推送服务器];3、 iPhone:用来接收APNS下发下...

weixin_30687051的博客 387

睿抗机器人魔力元宝在完成任务过程中如何使机械臂先到达白色盒子上方而不是先到达工作台?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1378

IOS 消息推送原理及其实现

一、消息推送原理:   在实现消息推送之前先提及几个于推送相关概念,如下图1-1:    1-1 1、              Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]); 2、              APNS:A

Kikim的地盘 2057

Python爬虫案例——解密抓取西红柿小说《我不是戏神》全章节!!!

本文介绍了抓取番茄小说网站《我不是戏神》全本内容的完整流程。首先分析网站反爬机制,发现采用自定义混淆字体加密文本内容。通过下载字体文件并解析字符映射关系,组建本地字体映射表。随后编写Python爬虫程序,实现自动获取章节链接、请求加密内容、解密替换字体、保存为本地txt文件等功能。代码包含UA伪装、请求头设置、进度条显示等细节处理,最终实现小说内容的完整抓取与解密存储。

@优快云盲敲代码的阿豪的博客 660

【Java面试题汇总】Spring篇(2026版)

IoC、DI、aop、事务、为什么不建议@Transactional、事务传播级别、@Autowired和@Resource注解的区别、BeanFactory和FactoryBean的区别、Bean的作用域,以及默认的作用域、Bean的生命周期、循环依赖、三级缓存、

种一棵树最好的时间是十年前,其次是现在 7371

IOS 消息推送原理及实现总结

一、消息推送原理:   在实现消息推送之前先提及几个于推送相关概念,如下图1-1:    1-1 1、              Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]); 2、              APNS:A

沧浪之水 4157

Linux 设置双网卡通信,外网网卡和内网网卡

背景,Linux 主机已经安装了内网、外网 2 张网卡,目前外网网络已通,需要设置内网网卡转发通内网 内网需要通信的设备的网段,如果 10.99.0.0 代表 10.99 网段的所有 IP 表示 10.xx 网段走 10.xx.xx.xx 这个网关转发 :内网网卡设备示例 2、设置启动自动生效 打开 文件,如果没有则创建该文件,然后在文件内写入如下的内容修改上面的语句 为 即可 示例...

简简单单Onlinezuozuo 6604

IOS Push消息推送原理及应用

2012-10-08 15:08533人阅读评论(0)收藏举报   Push的原理:   Push 的工作机制可以简单的概括为下图   图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider。   APNS 是Apple Push Notification Service(Apple Push服务器)的缩写,是苹果的服务器。

868

【精细解读】xapp585(多通道LVDS接口ADC)

xapp585的参考设计有Verilog和VHDL两种源码。

FPGA艺术家的博客 532

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

iOS 消息推送原理及实现Demo

一、消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图1-1: 1、Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]); 2、APNS:Apple Push Notification Service[苹果消息推送服务器]; 3、iPho

luyangMVP的博客 1348

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

浅谈iOS和Android后台实时消息推送的原理和区别

前言 iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同。实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具。本文将从原理上谈谈两个平台上实时消息推送的区别。 简要对比 iOS 系统的推送(APNS,即 Apple Push Notification Service)依托一个或几个系统常驻进程...

杭城小刘 1763

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

移动应用消息推送及推送原理

消息推送 消息通知分本地通知和远程推送通知。 本文是记录React Native使用aws push notifications推送及相关配置及遇到的相关问题。在twilio和aws中选择使用aws的Pinpoint服务。Pinpoint服务前一百万条通知免费,之后每一百万条通知收取 1.00 USD。SMS发送的每条消息都需要付费。每条消息支付的价格取决于接收人所在国家/地区。APNs使用keys来配置推送。 iOS推送原理 苹果的推送服务通知由苹果的推送服务器APNs(Apple Push Noti

Vincent Blog 2065

iOS 消息推送原理及实现总结

iOS 消息推送原理及实现总结+1 一、消息推送原理: 在实现消息推送之前先提及几个于推送相关概念,如下图: 1、 Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]); 2、 APNS:Apple Push Notification Servi

HorsonWu 1350

消息推送原理以及实现过程

消息推送原理以及实现过程

TianciZhu的博客 1万+

ios浅析web端的消息推送原理

引言: 在互联网高速发展的时代里,web应用大有取代桌面应用的趋势,不必再去繁琐的安装各种软件,只需一款主流浏览器即可完成大部分常规操作,这些原因都在吸引着软件厂商和消费者。而随着各大厂商浏览器版本的迭代,前端技术的不断革新,消息推送用到的场景也越来越多了。收发邮件提醒,在线IM聊天,自动化办公提示等等,web系统里总是能见到消息推送的应用。消息推送用好了能增强用户体验,用不好则会起相反的效果。...

马甲包开发审核交流群:869685378 541

IOS 消息推送原理及实现总结(续)---- Provider实现

在IOS 消息推送原理及实现总结中讲述了消息推送的原理及实现总结,但并未讲到Provider服务端及Client App客户端的实现,但我在这里只是简单讲述Provider服务端(JAVA实现)步骤如下:   一、  制作Provider服务端所需要的*.p12文件: 在IOS 消息推送原理及实现总结的图2-8中所展示的密钥、证书,我们并没有使用到它,那么为什么要展示出来呢,

Kikim的地盘 2733

iOS 实现消息推送及原理分析

摘抄:脚本之家一、消息推送原理在实现消息推送之前先提及几个于推送相关概念,如下图:1、简介 (1)、Provider:就是为指定IOS设备应用程序提供Push的服务器,(如果IOS设备的应用程序是客户端的话,那么Provider可以理解为服务端[消息的发起者]); (2)、APNS:Apple Push Notification Service[苹果消息推送服务器]; (3)、iPhone:用来接收

xiaoxiaobukuang的专栏 1573
下一篇: iOS面试题库(精华版)
style_施
博客等级 码龄11年 11粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值