ios 本地推送

原创 2015年11月20日 17:46:54

    iOS上有两种消息通知,一种是本地消息(Local Notification),一种是远程消息(Push Notification,也叫Remote Notification),设计这两种通知的目的都是为了提醒用户,现在有些什么新鲜的事情发生了,吸引用户重新打开应用。本地推送也可以通过服务器控制,比如说如果有新消息了,推送消息,但是,前提是程序必须是打开的,而远程推送,是通过苹果APNS服务器,推送给手机,手机在推送给具体的哪个程序,一般远程推送用到的比较多.

   先介绍本地推送:

//接收本地推送
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
    NSLog(@"%@",notification.alertBody);
    UILabel*label = [[UILabel alloc]init];
    label.frame = CGRectMake(0,0, 160,20);
    label.layer.cornerRadius =10;
    label.backgroundColor = [UIColor blackColor];
    label.text = notification.alertBody;
    label.textColor = [UIColor whiteColor];
    label.font = [UIFont systemFontOfSize:12];
    label.textAlignment = NSTextAlignmentCenter;
     
    [self.window addSubview:label];
}
1.首先,先在appdelegate中注册:
<span style="color:#006600;">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];//注册本地推送
    return YES;
}</span>
2.然后,在具体的viewcontroller中实现推送:
<span style="color:#006600;">- (IBAction)localPushNow:(id)sender {
  
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        //本地推送
        UILocalNotification*notification = [[UILocalNotification alloc]init];
        NSDate * pushDate = [NSDate dateWithTimeIntervalSinceNow:10];
        if (notification != nil) {
            notification.fireDate = pushDate;
            notification.timeZone = [NSTimeZone defaultTimeZone];
            notification.repeatInterval = kCFCalendarUnitDay;
            notification.soundName = UILocalNotificationDefaultSoundName;
            notification.alertBody = @"hello,world";
            notification.applicationIconBadgeNumber = 0;
            NSDictionary*info = [NSDictionary dictionaryWithObject:@"test" forKey:@"name"];
            notification.userInfo = info;
            [[UIApplication sharedApplication] scheduleLocalNotification:notification];
             
        }
    });
 
}</span>
3.在appdelegate中会接收到推送信息:

//接收本地推送
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
    NSLog(@"%@",notification.alertBody);
    UILabel*label = [[UILabel alloc]init];
    label.frame = CGRectMake(0, 0, 160, 20);
    label.layer.cornerRadius = 10;
    label.backgroundColor = [UIColor blackColor];
    label.text = notification.alertBody;
    label.textColor = [UIColor whiteColor];
    label.font = [UIFont systemFontOfSize:12];
    label.textAlignment = NSTextAlignmentCenter;
     
    [self.window addSubview:label];
}
过程中可能会出现如下状况:

Attempting to schedule a local notification……with a sound but haven't received permission from the user to play sounds

Attempting to schedule a local notification……with an alert but haven't received permission from the user to display alerts

可能是因为你没有注册,或者设置中没有开启推送功能,


iOS实现服务器原生推送

iOS原生实现推送 一、iOS推送机制 Provider是给你手机应用发出推送消息的服务器,而APNS(Apple Push Notification Service)则是苹果消息推送服务器...
  • sinat_34380438
  • sinat_34380438
  • 2016年12月12日 14:14
  • 2019

iOS远程消息推送(信鸽推送平台)

首先进入信鸽推送平台网站,登录, 下载iOS SDK文档,解压文件,将demo文件夹下面的sdk文件拖入工程中. 在苹果开发者网站,创建自己的APP id ,推送证书,描述文件.  详情见推送平台的文...
  • qiyexiluo
  • qiyexiluo
  • 2016年08月13日 15:58
  • 1429

iOS本地推送与远程推送详解(一图看懂)

一、简介分为本地推送和远程推送2种。可以在应用没有打开甚至手机锁屏情况下给用户以提示。它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用;如果用户不同意则下次打开程序...
  • jsd0915
  • jsd0915
  • 2017年05月31日 14:05
  • 369

IOS推送声音设置

项目中遇到需要自定义通知声音的需求,以前没做过,就查了下官方文档,就像文档上说的,实现起来确实挺简单,就整理下当做备忘吧。 关于推送,官方文档、各种第三方推送文档都很全,就跳过了。 由于自定义...
  • u011043997
  • u011043997
  • 2016年04月18日 16:37
  • 7763

iOS 推送的服务端实现

转载自:http://www.dozer.cc/2013/03/push-notifications-server-side-implement/ 文章导航 [隐藏] 1 Ap...
  • chenyong05314
  • chenyong05314
  • 2013年03月27日 11:33
  • 6847

iOS推送小结(证书的生成、客户端的开发、服务端的开发)

1.推送过程简介        (1)App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注...
  • Su_tianbiao
  • Su_tianbiao
  • 2016年02月17日 11:37
  • 1571

IOS原生代码实现推送

好久没有写过博客啦,今天就由本菜鸟给大家做一个简单的IOSApp消息推送教程吧!一切从0开始,包括XCode6, IOS8, 以及苹果开发者中心最新如何注册应用,申请证书以及下载配置概要文件,相信很多...
  • yidu_blog
  • yidu_blog
  • 2016年05月30日 16:06
  • 3056

iOS消息推送之本地推送

本文转载自:http://my.oschina.net/u/2340880/blog/405491       IOS中使用本地通知为你的APP添加提示用户功能 首先,我们先要明白一个概念,这里...
  • u012938194
  • u012938194
  • 2016年07月20日 20:40
  • 2293

iOS-OC-本地推送和取消本地推送服务

1.添加本地推送 // 设置本地通知 + (void)registerLocalNotification:(NSInteger)alertTime alertBody:(NSString *)ale...
  • u014220518
  • u014220518
  • 2016年05月24日 12:07
  • 3521

iOS推送证书从申请到使用

关于这个话题,已经有很多写的很好的文章了。但是,在自己做的过程中,即使别人写的已经很好了,还是会遇到这样那样的问题。自己还是再写一遍吧。 本文记录了从无到有申请证书,到最后能够发出通知。当然,前提是我...
  • chanryma
  • chanryma
  • 2016年04月17日 17:21
  • 8776
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios 本地推送
举报原因:
原因补充:

(最多只允许输入30个字)