ios本地分支推送到远程推送和远程推送的区别

iOS本地和推送通知和远程推送_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
iOS本地和推送通知和远程推送
上传于||文档简介
&&i​O​S
阅读已结束,如果下载本文需要使用3下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩49页未读,继续阅读
你可能喜欢&&&&本地通知与远程推送
本地通知与远程推送
IOS关于本地通知与远程推送的文档:(developer 官方文档地址:/library/prerelease/tvos/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP-CH103-SW1)
嵌到我的页面
<input type="text" readonly="true" value="">
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
移动开发下载排行iOS开发--本地通知与远程通知 - 简书
下载简书移动应用
写了36799字,被28人关注,获得了23个喜欢
iOS开发--本地通知与远程通知
这里是指推送通知跟NSNotification有区别:
1、NSNotification是系统内部发出通知,一般用于内部事件的监听,或者状态的改变等等,是不可见的2、本地通知与远程通知是可见的,主要用于告知用户或者发送一些App的内容更新,推送一些相关的消息,让用户知道App内部发生了什么事情。
Paste_Image.png
iOS常用通知
1、本地推送通知:(Local Notification)2、远程推送通知:(Remote Notification)
iOS通知呈现效果(5)
1.设置音效,(提醒作用)2.设置横幅,3.设置弹窗,4.锁屏下也可以呈现,5.App图标的数字 (即新内容的数量)至于显示横幅或者弹窗,取决于用户的设置iOS手机设置中:通知中心-选择应用-选择应用下的通知模式-OK!
Paste_Image.png
通知的注意点
1、App在前台运行的时候,通知不会展示出来2、点击通知,默认会自动打开推送通知的App3、不管App是否打开,通知都可以如期发出
1、本地推送通知:
不需要联网就可以发出的通知使用场景:提醒用户完成一些任务,比如:定时提醒,生活备注,看电影等等
推送通知属性:
// 枚举值-发出通知的时间(有局限性)
@property(nonatomic) NSCalendarUnit repeatI
// 自定义-发出通知的时间(可以自由设定时间)
@property(nonatomic,copy) NSCalendar *repeatC
// 区域-创建只需要创建一个中心点与半径就可以了
@property(nonatomic,copy) CLRegion *region
// 进入区域发出一个通知,设置yes,只会发出一个通知,设置NO就会每次进入这个区域都发送
@property(nonatomic,assign) BOOL regionTriggersOnce NO
// 设置通知的内容
@property(nonatomic,copy) NSString *alertB
// 决定alertAction是否生效
@property(nonatomic) BOOL hasA
// 设置滑块的文字
@property(nonatomic,copy) NSString *alertA
// 设置点击通知的启动图片(一般设置App启动图片后,这里可以随便写)
@property(nonatomic,copy) NSString *alertLaunchI
// 设置alertTitle,就是通知内容上面的文字
@property(nonatomic,copy) NSString *alertTitle
// 设置弹出的声音
@property(nonatomic,copy) NSString *soundN
// 设置App的消息条数
@property(nonatomic) NSInteger applicationIconBadgeN
// 设置通知一些额外数据
@property(nonatomic,copy) NSDictionary *userI
如何发出本地通知:
// 1.创建本地通知
UILocalNotification *localNote = [[UILocalNotification alloc] init];
// 2.设置本地通知的内容
// 2.1.设置通知发出的时间
localNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:3.0];
// 2.2.设置通知的内容
localNote.alertBody = @"在干吗?";
// 2.3.设置滑块的文字(锁屏状态下:滑动来“解锁”)
localNote.alertAction = @"解锁";
// 2.4.决定alertAction是否生效
localNote.hasAction = NO;
// 2.5.设置点击通知的启动图片
localNote.alertLaunchImage = @"123Abc";
// 2.6.设置alertTitle
localNote.alertTitle = @"你有一条新通知";
// 2.7.设置有通知时的音效
localNote.soundName = @"buyao.wav";
// 2.8.设置应用程序图标右上角的数字
localNote.applicationIconBadgeNumber = 999;
// 2.9.设置额外信息
localNote.userInfo = @{@"type" : @1};
// 3.调用通知
[[UIApplication sharedApplication] scheduleLocalNotification:localNote];
使用注意:iOS7,不需要用户授权就可发出通知,而iOS8以后,必须用户授权才可以发出通知
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 设置应用程序的图标右上角的数字
[application setApplicationIconBadgeNumber:0];
if ([[UIDevice currentDevice].systemVersion doubleValue] &= 8.0) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];
// 界面的跳转(针对应用程序被杀死的状态下的跳转)
// 杀死状态下的,界面跳转并不会执行下面的方法- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification,
// 所以我们在写本地通知的时候,要在这个与下面方法中写,但要判断,是通过哪种类型通知来打开的
if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) {
// 跳转代码
UILabel *redView = [[UILabel alloc] init];
redView.frame = CGRectMake(0, 0, 200, 300);
redView.numberOfLines = 0;
redView.font = [UIFont systemFontOfSize:12.0];
redView.backgroundColor = [UIColor redColor];
redView.text = [NSString stringWithFormat:@"%@", launchOptions];
[self.window.rootViewController.view addSubview:redView];
return YES;
监听通知,如果用户打开通知,可以让用户进入一些特定的界面
应用程序在进入前台,或者在前台的时候都会执行该方法
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
// 必须要监听--应用程序在后台的时候进行的跳转
if (application.applicationState == UIApplicationStateInactive) {
NSLog(@"进行界面的跳转");
// 如果在上面的通知方法中设置了一些,可以在这里打印额外信息的内容,就做到监听,也就可以根据额外信息,做出相应的判断
NSLog(@"%@", notification.userInfo);
UIView *redView = [[UIView alloc] init];
redView.frame = CGRectMake(0, 0, 100, 100);
redView.backgroundColor = [UIColor redColor];
[self.window.rootViewController.view addSubview:redView];
2、远程推送通知:
从远程服务器推送给客户端的通知(需要联网)远程推送服务---就是APNs模拟器无法调试远程推送
为什么需要远程推送通知:
解决获取传统数据的局限性,让数据实时更新
使用场景:
聊天功能(一般非即时聊天)、推送一下App的内部新功能、版本下载等
注:所有的苹果设备,在联网状态下,都会与苹果的服务器建立-长连接
长连接的作用:时间效准、系统升级、查找我的iphone、远程通知好处:数据传输快、数据保持最新状态
Paste_Image.png
Paste_Image.png
Paste_Image.png
我在面试中一般也比较喜欢问面试者这个问题。能解释清楚肯定就有货真价实的开发经验
使用远程推送
1、获取苹果获得deviceToken-获取手机UDID+应用的唯一标识(bundel ID)2、得到苹果返回的deviceToken3、发送deviceToken给公司的服务器4、监听用户对通知的点击
如何调试远程推送功能
1、真机2、调试推送需要的证书文件
证书自己配置。。。3、发布具有推送服务的App
包含推送的cer证书+某个具有发布资格的电脑,就可以发布
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([[UIDevice currentDevice].systemVersion doubleValue] &= 8.0) { //iOS8
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];
[application registerForRemoteNotifications];
} else { // iOS7
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeNewsstandContentAvailability | UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert];
// 根据远程通知通过UIApplicationLaunchOptionsRemoteNotificationKey打开的情况来进行
if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]) {
// 添加一个红色的View
return YES;
// 获取DeviceToken
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
// 将DeviceToken传给服务器
NSLog(@"%@", deviceToken.description);
// 正常接到远程通知的时候会调用这个方法
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
NSLog(@"%@", userInfo);
// 正常打开推送后,
// 后台操作(根据收到推送,让程序自己执行一些操作,不管用户是否点击推送)
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
NSLog(@"---------");
UIView *redV = [[UIView alloc] init];
redView.backgroundColor = [UIColor redColor];
redView.frame = CGRectMake(100, 100, 100, 100);
[self.window.rootViewController.view addSubview:redV];
// 1.打开后台模式 2.告诉系统是否有新内容的更新 3.发送的通知有固定的格式("content-available":"1")
// 2.告诉系统有新内容
completionHandler(UIBackgroundFetchResultNewData);
1、打开后台模式
Paste_Image.png
2、告诉系统有新内容
completionHandler(UIBackgroundFetchResultNewData);
3、发送通知有固定格式
("content-available":"1")
找的这张图:也有相应的模拟推送代码,需要的可以联系我
Paste_Image.png
一般开发中直接使用(jpush)激光推送就可以快速完成App的推送功能。具体按照官方文档来进行.(有空会写一篇专门针对激光推送的文稿)
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
至少比在眼前失去许多东西...还要好得多!只要是能做的事,我都要去做!--路飞
分享开发的点滴,大家共同进步!
· 121人关注
主要汇总一些socket+UDP/TCP相关技术文章,以及即时通讯用的第三方组件。
· 39人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:ios开发有关远程推送的测试版和正式发布版的区别_百度知道
ios开发有关远程推送的测试版和正式发布版的区别
  证书的制作总共分aps_development.cer和导出相应的p12文件这几种制作过程我就不重复了(这几种证书貌似都是给后台做的,前端用不到)。  我们的项目在测试期间一直很顺利,但是我必须要确保上线后能用,因为测试证书和正式发布的证书以及一些其他东西是不一样的。 测试开始,我用的是之前测试证书上的deviceTocken,然后更换了不同的p12文件和苹果服务器地址。但是结果悲剧了,pad收不到推送的信息。  后来搜到相关的问题,大概就是测试证书的deviceTocken和发布证书所获取的deviceTocken不同,想不同了,然后在网上搜了半天(英文水平不行,官方文档上没有找到)最终还是让我找到了解决方案  &#47;* 开发的时候一般我们都是用Xcode直接灌到设备里 这个时候development证书是可以推送成功的
但是production证书却推送不了 不过苹果给我们提供了Ad Hoc测试方式 它使用的是发布证书 如果你
不知道Ad Hoc模式可以搜一下 很简单的 这里有一个关键的地方 development和production得到的
Token的不一样的 使用Ad Hoc方式装到设备上得到的就是production Token 所以你在用Ad Hoc方式
测试的要使用production Token 如果使用Ad Hoc方式测试没问题 这个发布也就没问题了  *&#47;  上面是别人的原话,我抄下来的,通过Ad Hoc方式装上后得到的deviceTocken果然不一样,后台发送的推送也能正常的接受,实在感谢这位大牛,又学了一招,虽然不是自己解决的,但是分享给大家还是能彻底解决这个问题的。  最后,除了百度外,stack overflow也是个好地方,有问题了可以去试着找找,另外,千万不要忽视了苹果官方的文档,英文好的同学可以去苹果官网上的视频教学的地方逛逛
其他类似问题
为您推荐:
pem 证书不同。
ios的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁&&国之画&&布布分享&&&& &&&&
版权所有 京ICP备号-2
迷上了代码!

我要回帖

更多关于 ios 本地推送 的文章

 

随机推荐