一.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. 一个插件让你在chrome直接运行apk

    插件的下载地址: https://chrome.google.com/webstore/detail/arc-welder/emfinbmielocnlhgmfkkmkngdoccbadn?utm_s ...

  2. .frame类库简单介绍与使用

    .a静态库是Unix推出的,几乎所有平台都可以使用: .framework是Apple推出的,是对.a静态库的封装,方便使用. 1.新建framework类库项目 2.生成的类库中,自定义的源头文件需 ...

  3. iOS关于启动页自定义特殊处理

    平常开发中对于启动页可能会有一些特别的要求,比如在启动页加动画或加一些按键可以响应事件等,最近项目中要在启动页增加版本号,因为版本号是不断的改变,所以要动态实现把它加到启动页上:在XCode上面配置的 ...

  4. android studio我的习惯操作

    一.修改字体 点击左上角File选择settings....进入界面选择Editor-->Colors&Fonts-->Font点击界面中Save As...在对话框中输入名字点击 ...

  5. socket编程listen函数限制连接数的解决方案

    函数原型: int listen(int sockfd, int backlog); 当服务器编程时,经常需要限制客户端的连接个数,下面为问题分析以及解决办法: 下面只讨论TCP  UDP不做讨论(很 ...

  6. OC NSSet

    OC NSSet 数组的特点: 有序的 Set的特点: 无序的,存储元素无重复(例:set中有两个元素'a' 输出时只输出一个a) NSSet初始化 NSSet * set = [[NSSet all ...

  7. 什么是XMLA-- XML for Analysis

    在我刚开始接触OLAP时,同事就告诉我 XMLA会让他使用更方便. 什么是XMLA? Providers 供应商 ActivePivot Hyperion Essbase IBM Infosphere ...

  8. 1.2 《硬啃设计模式》 第2章 学习设计模式需掌握的UML知识

    要看懂设计模式,你需要懂类图(Class Diagram),也需要懂一点对象图(Object Diagram),下面介绍一些UML的必要知识,以便你学习设计模式. 属性.操作 下图简单介绍类的属性和操 ...

  9. CYQ.Data 数据框架 使用篇一 入门指南

    快速使用帮助 | 回贴(13) | 浏览(11303) | 发表日期 :2010-12-20 20:12:29   #楼主   本文针对V5版本进行修改于(2016-07-04) 下面是使用步骤: 一 ...

  10. WPF学习之路(八)页面

    传统的应用程序中有两类应用程序模式:桌面应用,Web应用.WPF的导航应用程序模糊了这两类应用程序的界限的第三类应用程序 WPF导航表现为两种形式,一是将导航内容寄宿于窗口,二是XAML浏览器应用程序 ...