一.APNS 远程推送

1.所有的苹果设备,在联网状态下,都会与苹果服务器建立长连接.

2.长连接:就是只要联网了,就一直建立连接.

3.长连接的作用:时间校准,系统升级,查找我的iPhone.

4.长连接的好处:数据传输速度快,数据保持最新状态.

5.  DeviceToken 处理流程如下:

1.手机注册远程通知到APNS服务器.
2.APNS服务器向手机返回DeviceToken.
3.手机再将DeviceToken发送到你的App.
4.你的App再发送DeviceToken到数据提供商.

6. 获取DeviceToken的流程需要文件如下:

1.电脑真机调试证书(开发证书或发布证书).
2.设备的UUID.
3.APPID需要Bundle identifier 也就是Xcode中的,必须是全名,不能有*号代替,如com.ling.identifier
4.电脑描述文件(CertificateSigningRequest.certSigningRequest文件).
5.开发推送证书和发布推送证书.

7.推送

PushMeBady是一款用来测试的APNs的开源Mac项目.
github下载地址:https://github.com/stefanhafeneger/PushMeBaby

8.APNS推送整体流程

.创建推送相关证书.

.在启动AppDelegate方法中调用注册远程通知
/*第2种app已经被关闭(进程已死)
启动app,启动完毕会调用AppDelegate的下面方法*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch. //注册远程通知,iOS8.0以上的方法 UIUserNotificationSettings *settingNoti = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settingNoti];
[application registerForRemoteNotifications]; //iOS7.0及以下的方法
// UIRemoteNotificationType type = UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound;
// [application registerForRemoteNotificationTypes:type]; //进程已经被关闭(进程已死,再进来),获取远程通知内容
UILocalNotification *location = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
if (location) { NSLog(@"%@",location.userInfo);
}else{
NSLog(@"%@",location.userInfo);
} return YES;
}
//注册成功后会调用AppDelegate的下面方法,得到设备的deviceToken - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ NSLog(@"获取deviceToken:%@",deviceToken); }
/*当设备接收到远程推送通知时
如果程序是处于关闭状态,系统会在给用户展示远程推送通知的同时,将程序启动到后台,并调用AppDelegate的下面方法*/
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
if (userInfo) {
NSDictionary *aps = userInfo[@"aps"];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"新的消息" message: [NSString stringWithFormat:@"%@",aps[@"alert"]] delegate:self cancelButtonTitle:nil otherButtonTitles:@"取消", nil];
[alert show]; }
}
/*当用户点击远程推送通知,会自动打开app,这里有2种情况
第1种:app并没有关闭,一直隐藏在后台
让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app*/
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(UILocalNotification *)notification{ NSLog(@"remoteNotification=%@",notification);
}
/*可以在这个方法中做些数据下载操作,争取在用户点击通知前,就将数据下载完毕 下载完毕要调用completionHandler这个block,告知下载完毕
completionHandler(UIBackgroundFetchResultNewData);*/
.下载PushMeBadyDemo,测试远程通知 //注意使用PushMeBady时,在ioSock.h文件中把不必要的错误注释了如下面所示.
//#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>
//电脑上导入开发者或发布者推送证书.修改名字为apns.cer //这里填写的获取的DeviceToken
self.deviceToken = @"e3094258 d8766f77 f29dfbfa ec3e3e83 8f0c213e 01e0eeea cc040536 e7d41730"; //这里是发布远程通知内容
self.payload = @"{\"aps\":{\"alert\":\"星仔爱善良的女孩.\",\"badge\":1}}";
//这里是远程通知APNs发布证书
self.certificate = [[NSBundle mainBundle] pathForResource:@"apns" ofType:@"cer"];

二. 极光推送(JPush)

1.什么是极光推送(JPush)

.一套远程推送解决方案,支持android和iOS两个平台
.它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量、开发复杂度

2.步骤如下:

1.注册账号,创建应用.

2.填写应用信息,开发证书和生产证书密码是你导出证书生成p12文件的密码.

3.导出开发和发布(生产)推送证书,然后设置密码

4.JPush会自动记录和管理所有安装过此app的设备deviceToken,利用JPush,可以轻易地给所有设备发送远程推送通知.

未完待续.............

iOS远程推送1的更多相关文章

  1. IOS远程推送

    IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...

  2. iOS远程推送原理及实现过程

    ➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...

  3. iOS 远程推送通知

    1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remot ...

  4. iOS远程推送之友盟Push

    更新记录: 1.2015年10月23日上午10:10分更新,优化了该类,去除了不必要的方法. ----------------------------------------------------- ...

  5. iOS 远程推送消息解析及逻辑处理

    关于远程推送的相关配置网上已经有足够多的教程,这里就不复述了.这里讲述当客户端收到推送消息后,应怎样对其进行相应的逻辑处理. 工程的AppDelegate.m文件里提供了如下方法: //当应用程序启动 ...

  6. iOS 远程推送通知 详解

    1: ios本地通知和远程通知 http://wangjun.easymorse.com/?p=1482 2: 苹果远程通知服务申请激活例图 (外国佬写的.) http://mobiforge.com ...

  7. IOS 远程推送通知(UIRemoteNotification)

    ●  什么是远程推送通知 ●  顾名思义,就是从远程服务器推送给客户端的通知(需要联网) ●  远程推送服务,又称为APNs(Apple Push Notification Services) ●   ...

  8. ios远程推送和python版push server相关笔记

    今天研究了下ios的远程推送,网上的相关教程很多,做了一遍下来记录一下遇到的问题和注意事项(转载请注明) 1.证书及乱七八糟的配置 公钥:app id管理那儿的“Development Push SS ...

  9. [iOS 高级] iOS远程推送与本地推送大致流程

    本地推送: UILocalNotification *notification=[[UILocalNotification alloc] init]; if (notification!=nil) { ...

随机推荐

  1. SQLLDR 教程

      )- 总览     http://blog.csdn.net/dbanote/article/details/9153895 )- 命令行参数 http://blog.csdn.net/dbano ...

  2. Android-Using DDMS

    原文:http://developer.android.com/tools/debugging/ddms.html#how-ddms-works Android提供了一个debug工具叫做:DDMS, ...

  3. UIResponder(iOS 常见的事件)

    1.触摸事件 /** 当手指开始滑动 */ - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event /** 当手指正在移动 * ...

  4. Caliburn.Micro 关闭父窗体打开子窗体

    比如我们在做登录的时候需要关闭父窗体打开子窗体.使用Caliburn.Micro它的时候我们关闭登录窗口的时候主页面也会关闭. 解决方法就是在登录页面的CS里面写 IndexView iv = new ...

  5. XML,DTD,XSD,XSL的区别

    XML=可扩展标记语言(eXtensible Markup Language). 可扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可用 方便的方式建立,虽然XML ...

  6. 用Objective-C写了一个简单的批量更改文件名的程序

    前言:因为本人要高仿一个app,从app中解压asserts得到的所有图片文件,文件名都带有~iPhone这个干扰的名字,为了去除这个~iPhone这个字符串,所以本人写了个简答的批量更改所有文件名的 ...

  7. C#问题

    1.结构体里面是否可以有属性? 可以有属性.实测代码以及截图. In C#, we can use the following statement to convert a string s to a ...

  8. Redis客户端开发包:Jedis学习-高级应用

    事务 Jedis中事务的写法是将redis操作写在事物代码块中,如下所示,multi与exec之间为具体的事务. jedis.watch (key1, key2, ...); Transaction ...

  9. MVC 多语言记录1 设置默认的ResourceType

    http://stackoverflow.com/questions/3260748/default-resource-for-data-annotations-in-asp-net-mvc Add ...

  10. CSRF攻击与防御

    CSRF是什么 CSRF在百度百科中是这么说的:“CSRF(Cross-site request forgery跨站请求伪造,也被称为“one click attack”或者session ridin ...