iOS远程推送1
一.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的更多相关文章
- IOS远程推送
IOS远程推送 一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说 ...
- iOS远程推送原理及实现过程
➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...
- iOS 远程推送通知
1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remot ...
- iOS远程推送之友盟Push
更新记录: 1.2015年10月23日上午10:10分更新,优化了该类,去除了不必要的方法. ----------------------------------------------------- ...
- iOS 远程推送消息解析及逻辑处理
关于远程推送的相关配置网上已经有足够多的教程,这里就不复述了.这里讲述当客户端收到推送消息后,应怎样对其进行相应的逻辑处理. 工程的AppDelegate.m文件里提供了如下方法: //当应用程序启动 ...
- iOS 远程推送通知 详解
1: ios本地通知和远程通知 http://wangjun.easymorse.com/?p=1482 2: 苹果远程通知服务申请激活例图 (外国佬写的.) http://mobiforge.com ...
- IOS 远程推送通知(UIRemoteNotification)
● 什么是远程推送通知 ● 顾名思义,就是从远程服务器推送给客户端的通知(需要联网) ● 远程推送服务,又称为APNs(Apple Push Notification Services) ● ...
- ios远程推送和python版push server相关笔记
今天研究了下ios的远程推送,网上的相关教程很多,做了一遍下来记录一下遇到的问题和注意事项(转载请注明) 1.证书及乱七八糟的配置 公钥:app id管理那儿的“Development Push SS ...
- [iOS 高级] iOS远程推送与本地推送大致流程
本地推送: UILocalNotification *notification=[[UILocalNotification alloc] init]; if (notification!=nil) { ...
随机推荐
- Git 撤销修改
Git 撤销修改 增补提交 git commit –C HEAD –a --amend -C表示复用指定提交的提交留言,这个例子中是HEAD,实际上可以指定其他有效的提交名称. 如果参数是小写的-c, ...
- Android 判断SIM卡属于哪个移动运营商
第一种方法:获取手机的IMSI码,并判断是中国移动\中国联通\中国电信 TelephonyManager telManager = (TelephonyManager) getSystemServic ...
- Android App 开发技能图谱
操作系统 Windows/MacOSX/Linux 编程语言 Java HTML/JS (Hybrid/Web App) C/C++ (NDK) SQL (DB) Kotlin 开发工具 IDE An ...
- APP 游戏审核改动
广电总局封杀游戏 移动游戏将进入洗牌期 封杀了电影.电视剧.网络剧 现在轮到游戏了 新法速递 2016年7月1日,国家新闻出版广电总局办公厅<关于移动游戏出版服务管理的通知>(新广出办发[ ...
- 【代码笔记】iOS-点击城市中的tableView跳转到旅游景点的tableView,下面会有“显示”更多。
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- web service上传参数代码实例
web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...
- GitHub Android Libraries Top 100 简介
本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过 ...
- DB2LOOK命令提取数据库对象信息
提取复制数据库的DDL语句:db2look -d BCDLJS -e -o db2look.sql -a -a:导出所有用户的DDL-o: 定向结果到文件-d: 数据库名-e: 抽取复制数据库所需的 ...
- LAMP配置虚拟目录
1. httpd.conf中添加 Listen 81 2. 1 <VirtualHost 127.0.0.2:81> 2 DocumentRoot E:\ws\2011\DiscuzSp ...
- WPF学习之路(六)Command
在WPF中,命令绑定机制是相比于事件更高级的概念,把应用程序的功能划分为多个任务,任务由多种途径触发. 应用Command Binding使代码更符合MVVM模式(Model-View-ViewMod ...