1.应用程序生命周期
Not running 未运行 程序没启动
Inactive 未激活 程序在前台运行,不过没有接收到事件。在没有事件处理情况下程序通常停留在这个状态;
Active 激活 程序在前台运行而且接收到了事件。这也是前台的一个正常的模式;
Backgroud 后台 程序在后台而且能执行代码,大多数程序进入这个状态后会在在这个状态上停留一会。间到之后会进入挂起状态 (Suspended)。有的程序经过特殊的请求后可以长期处于Backgroud状态;
Suspended 挂起 程序在后台不能执行代码。系统会自动把程序变成这个状 态而且不会发出通知。当挂起时,程序还是停留在内存中的,当系统内存低时,系统就把挂起的程序清除掉,为前台程序提供更多的内存
2.推送相关原理
推送的原理是,iphone连着唯一的一条连接到apple的服务器,由apple的服务器连接到各种邮件、天气、qq、微博服务器。平时就靠apple的服务器与各服务器沟通,有新消息时,才告诉iphone。因此非常省流量,而且省电。iphone可以把所有的第三方进程kill掉,系统底层维持着与apple服务器的连接。而android必须保留进程才能接收信息。在推送之前很多智能系统只能通过轮询的方式不断定期向服务器询问是否有新信息,往往费电和费流量。
消息推送不支持群发,只能一个一个发.如果你的App有100万个用户,要发消息怎么办? 一个一个的发呗,发100万次.消息包大概包括两部分:标示用户手机的id(32个字节)+消息体(<=256Bytes),消息体是json字符串,传输过程用ssl加密
deviceToken生成之后不是永远不变化的,当重装系统后将发生变化,正因为token有可能改变,所以建议在app start的时候即,(didFinishLaunchingWithOptions)的时候调用registerForRemoteNotificationTypes,来检测deviceToken是否改变, 如果改变则传送给push服务器,token应该存在本地用来判断是否变化,最好的方法是你第一次获取到deviceToken之后,也提交,然后存在本地,之后每次都比较,发现有变化,就更新你的服务器上的记录,那么旧device在push服务器中的record怎么办,一般是发送给APNS 然后通过他的反馈消息来处理用户在device里删除app,调用registerForRemoteNotificationTypes后,成功注册后 APNS返回token,然后回调delegate的方法didRegisterForRemoteNotificationsWithDeviceToken如果注册失败则调用,didFailToRegisterForRemoteNotificationsWithError
注意点:在第一次调用registerForRemoteNotificationTypes,方法时候没有联网,则回调的delegate方法不回调用,在第一次调用registerForRemoteNotificationTypes,注册成功之后,之后即使没有联网,在调用registerForRemoteNotificationTypes,方法时候会把上一次的devicetoken作为最新的token,用户在第一次安装app的时候,是一定会向APNS发送手机注册消息,然后APNS 给出用户提示 是否本地接受推送,如果接受则在通知中的包括,不能推送 则在通知中心的不包括(只要设置了都会向本地发消息 接受与否在于本地设置)。此时如果卸载app重新安装的话,则用户不会再次收到推送本地判断。而默认是让用户可以接受本地可以接受推送消息,此时如果用户不想接受推送消息可以去通知中心设置
3.推送状态
App关闭(手机顶部会弹出推送alert提示)
点击通知栏(能收到推送消息内容)
didFinishLaunchingWithOptions============================={
UIApplicationLaunchOptionsRemoteNotificationKey = {
aps = {
alert = "1234567878900-------";
badge = 1;
sound = default;
};
};
}
点击图标(不能收到推送消息内容)
didFinishLaunchingWithOptions=============================(null)
App后台(手机顶部会弹出推送alert提示)
点击通知栏(能收到推送消息内容)
didReceiveRemoteNotification============================={
aps = {
alert = "1234567878900-------";
badge = 1;
sound = default;
};
}
点击图标(不能收到推送消息内容)
App前台(手机顶部会不会弹出推送alert提示)
可以接受到推送消息内容
didReceiveRemoteNotification============================={
aps = {
alert = "1234567878900-------";
badge = 1;
sound = default;
};
}
分享到:
相关推荐
本文将深入探讨iOS的通知机制,包括本地通知(Local Notification)和远程通知(Remote Notification,也称为推送通知Push Notification)。 首先,我们要了解iOS中的通知中心(NotificationCenter),它是整个通知...
腾讯信鸽推送——专业移动推送平台 腾讯信鸽推送是一个专业的移动APP推送平台,支持百亿级的通知/消息秒级触达移动用户。开发者可以方便地嵌入SDK,通过API调用或视觉操作界面,实现对特定用户发送通知/消息,提升...
在iOS开发中,后台获取(Background Fetch)是一项关键特性,允许应用程序在系统认为合适的时机,在...通过研究这些源代码,开发者可以学习如何在自己的应用中有效利用iOS的后台获取功能,提升应用的实时性和用户体验。
在iOS应用开发中,苹果推送服务(Apple Push Notification service,简称APNs)是苹果公司提供的一项功能,允许开发者向已安装其应用的iOS设备发送消息、通知和其他数据。`iOS苹果推送apns测试工具.zip`文件包含的...
这个压缩包“IOS源码——后台获取功能.zip”很可能包含了一些示例代码或者完整的项目,用于帮助开发者理解和实现iOS应用的后台运行机制。以下是对这个主题的详细讲解: 1. **后台模式** iOS系统提供了多种后台模式...
这个"Iphone开发系列源码——实现类似 iOS 5 推送通知效果的代码"是针对苹果设备上开发应用程序时如何模拟iOS 5系统中的推送通知效果的一个示例项目。下面我们将深入探讨这个主题,了解如何在iOS应用中实现这一功能...
———————————————— 版权声明:本文为CSDN博主「iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:...
本文将深入剖析“PushMe”这个iOS应用的源码,旨在帮助开发者理解其背后的实现机制,尤其是推送通知(Push Notification)的相关功能。通过对源码的详细解读,我们可以从中汲取宝贵的实战经验,提升iOS开发技能。 ...
2. FCM(Firebase Cloud Messaging):当前广泛使用的谷歌推送服务,可以向Android、iOS甚至Web端发送消息。 3. Android系统级消息推送:涉及到BroadcastReceiver、PendingIntent等组件,用于接收和处理来自系统或...
8. **多平台兼容**:虽然这里主要讨论Android,但若服务器端代码支持跨平台,可能还包括iOS或其他平台的消息推送。 9. **调试与测试**:在开发过程中,测试推送的到达率、延迟、消息格式正确性以及不同Android版本...
另外,源码可能还包括错误处理、通知推送(如使用UserNotifications框架)以及权限管理(如访问地理位置)。所有这些功能都是构建一个完整应用所必需的。 总之,"IOS应用源码——天气预报.rar"为iOS开发者提供了一...
6. **权限管理**:根据iOS的隐私政策,应用需要用户授权访问位置和推送通知。在代码中,需要正确处理权限请求和响应。 7. **动画与特效**:为了提升用户体验,天气预报应用可能会包含一些动画效果,比如滑动切换...
这种机制通常涉及到UI交互和广告框架的集成,比如使用第三方广告库来实现广告的推送、显示以及用户交互后的隐藏效果。 描述中同样提到“IOS应用源码——下面的推出来再隐藏得广告demo.zip”,这证实了源码是关于...
这个压缩包“IOS应用源码——wordpress ios客户端最新源码.rar”包含的是一个针对WordPress平台的iOS客户端应用的源代码,这为我们提供了一个学习和理解如何在iOS上实现WordPress集成的宝贵资源。 首先,我们要了解...
通过分析这份源码,开发者可以学习到如何在iOS平台上实现社交功能,例如分享、评论、点赞、消息推送等。同时,还可以了解如何利用Block(闭包)这种编程技术来编写更加简洁和易读的代码。Block在Objective-C和Swift...
第六,iOS应用还可能涉及动画、推送通知、GPS定位、多媒体处理等复杂功能。Core Animation框架用于创建流畅的视觉效果,UserNotifications框架处理推送通知,Core Location用于获取设备位置,AVFoundation框架则支持...
对于iOS应用而言,苹果提供了自己的推送服务——Apple Push Notification service(APNs),允许开发者向用户的设备发送推送消息。 #### 二、APNs工作流程 1. **证书申请**:首先需要在Apple Developer网站上创建...
在这个项目中,我们可以学习到如何在iOS应用中实现本地通知和远程推送通知,这是iOS用户体验中的重要组成部分。 首先,我们要了解iOS的通知机制。本地通知(Local Notifications)是由应用本身在特定时间或事件触发...
本篇文章将重点讲解如何在Java项目中集成极光推送(JPush)服务,这是一款广泛使用的移动推送平台,支持Android和iOS系统,提供丰富的推送功能。 1. **极光推送简介** 极光推送是深圳市梦网科技发展有限公司提供的...
此外,还可以了解到错误处理、多线程编程、动画实现、推送通知集成等高级主题。对于初学者,这是一个很好的实践学习材料;对于经验丰富的开发者,它可能提供了新的编程技巧或架构思路。总之,"T01"的源码包是一个...