本地推送

本地推送:只有程序在后台运行 或者退出以后才会收到通知并显示

程序在前台的时候,接收通知推送,但不显示

基本步骤:

1>>  使用本地通知之前 先注册usersettings

2>>  创建本地通知

3>>   设置本地通知属性

4>>   定制通知


1.UIUserNotificationType:

UIUserNotificationTypeAlert: 显示提示信息

UIUserNotificationTypeBadge: 显示图标信息

UIUserNotificationTypeSound: 声音提示

UIUserNotificationTypeNone : 什么都没有


2. UILocalNotification属性:

// timer-based scheduling
     @property(nonatomic,copy) NSDate *fireDate;  触发时间
     @property(nonatomic,copy) NSTimeZone *timeZone; //时区
    
     @property(nonatomic) NSCalendarUnit repeatInterval;      //重复0 means don‘t repeat
     @property(nonatomic,copy) NSCalendar *repeatCalendar;  重复

@property(nonatomic,copy) CLRegion *region NS_AVAILABLE_IOS(8_0); 区域
    
     @property(nonatomic,assign) BOOL regionTriggersOnce NS_AVAILABLE_IOS(8_0);
    
     // alerts
     @property(nonatomic,copy) NSString *alertBody;  // 提示主体信息
     @property(nonatomic) BOOL hasAction;           // YES 是否显示锁屏状态下地滑动按钮的提示信息
     @property(nonatomic,copy) NSString *alertAction; //滑动来解锁  提示信息
     @property(nonatomic,copy) NSString *alertLaunchImage;//是否显示 启动图片
    
     @property(nonatomic,copy) NSString *alertTitle 标题
    
     // sound :UILocalNotificationDefaultSoundName
     @property(nonatomic,copy) NSString *soundName;   // name of resource in app‘s bundle to play or UILocalNotificationDefaultSoundName
    
     // badge
     @property(nonatomic) NSInteger applicationIconBadgeNumber;改变图标文字
    
     // user info
     @property(nonatomic,copy) NSDictionary *userInfo;   // 携带信息 
    
    
     // category of the local notification, as passed to +[UIUserNotificationSettings settingsForUserNotificationTypes:userNotificationActionSettings:]

@property (nonatomic, copy) NSString *category NS_AVAILABLE_IOS(8_0);


3.示例:

在viewController.m中

//0.使用本地通知之前 先注册usersettings
    //注册通知类型  包含  图标 声音  提示信息
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
   
    // 1.创建本地通知
    UILocalNotification *local = [[UILocalNotification alloc] init];
   
    //2.设置本地通知属性
    //2.1触发时间
    local.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
    //2.2显示滑动到应用的提示
    local.hasAction = YES;
    //2.3是否显示启动图片
    local.alertLaunchImage = @"随便写";
    //2.4 显示‘滑动解锁到XX‘
    local.alertAction = @"聊天";
    //2.5通知的内容
    local.alertBody = @"你好,在吗?";
    //2.6
    local.alertTitle = @"标题";
    //2.7图标数字
    local.applicationIconBadgeNumber = 10;
   
    //3.定制通知

[[UIApplication sharedApplication]scheduleLocalNotification:local];


在APPDelegate.m中,实现两个方法

@implementation AppDelegate
/**
 *  接收到本地通知的时候就会调用
 *  程序是活的
 *  :(前台) 默认不显示横幅的时候也会接收 通知
 *   (后台) 默认不接收  但是 点击了横幅 就相当于接收了通知
 *@param application  应用
 *  @param notification 本地通知
 */
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
   
    //添加控件
    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];
   
    label.backgroundColor = [UIColor redColor];
   
    label.numberOfLines = 0;
   
    label.text = [NSString stringWithFormat:@"%@",notification];
   
    [self.window.rootViewController.view addSubview:label];
   
    NSLog(@"%@",notification);

}

/**
 *  这个方法 程序  从死到生 就调用
 *  程序是死的
 *  1>点击图标  2>点击横幅(接收通知)  会调用
 *  @param application   应用
 *  @param launchOptions 启动参数字典
 *
 *  @return <#return value description#>
 */
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   
    //如果UIApplicationLaunchOptionsLocalNotificationKey  有值就是接收到通知 调用的这个方法
    if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) {
        //添加控件
        UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 300, 500)];
       
        label.backgroundColor = [UIColor redColor];
       
        label.numberOfLines = 0;
        //NSDictionary *dict = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
       
        label.text = [NSString stringWithFormat:@"%@",launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]];
       
        [self.window.rootViewController.view addSubview:label];
       
        //跳转到聊天界面
        // 展示当前的聊天信息
        //在吗?
      
        //NSLog(@"%@", dict[@"userInfo"]);

}
    return YES;

}


时间: 2024-08-07 12:30:24

本地推送的相关文章

本地推送 和 远程推送

今天看了一下远程推送,之前写的软件一直没加进这个功能,下个软件貌似要求有这个,所以问了一下度娘,也是有那么一丢丢的小麻烦吧,因为他没跳推送都必须经过苹果APNS,然后再发送给每个安装了软件的用户~~~ ///本地添加 void ,__FUNCTION__); if timeZone是UILocalNotification激发时间是否根据时区改变而改变,如果设置为nil的话,那么UILocalNotification将在一段时候后被激发,而不是某一个确切时间被激发.*/ ofType:@]; fo

ios本地推送demo

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     // Override point for customization after application launch.     //应用图标数字     application.applicationIconBadgeNumber=6;          //申请用

Apache Web Server 本地推送命令

/*****openssl 系统命令    x509输入文件类型       -in 是参数输入文件   -inform本地文件     -out是参数  是生成文件  ***/ openssl    x509  -in  *.cer  -inform  der  -out *.pem openssl  pkcs12  -nocets  -out  *.pem  -in  *.p12 /*****   >是 表示连接   ****/ cat  *.pem  *.pem  >  *.pem 在终

本地推送通知UILocalNotification

1 - (IBAction)schedule { 2 // 1.创建本地推送通知对象 3 UILocalNotification *ln = [[UILocalNotification alloc] init]; 4 5 // 2.设置通知属性 6 // 音效文件名 7 ln.soundName = @"buyao.wav"; 8 9 // 通知的具体内容 10 ln.alertBody = @"重大新闻:xxxx xxxx被调查了...."; 11 12 // 锁

SWIFT推送之本地推送(UILocalNotification)

本地推送通知是通过实例化UILocalNotification实现的.要实现本地化推送可以在AppDelegate.swift中添加代码实现,本事例是一个当App进入后台时推送一条消息给用户. 1.首先在didFinishLaunchingWithOptions方法内添加代码,IOS8推送消息首先要获得用户的同意,在初次安装App时会提示用户是否允许程序推送消息,此方法是App第一次运行的时候被执行一次,每次从后台激活时不执行该方法. func application(application:

iOS 本地推送

在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情. iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒 两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会 补充通知中心的内容避免初学者对两种概念的混淆. 简单些了一个关于

iOS的本地推送UILocalNotification的使用

UILocalNotification 1 第一步:接收本地推送 2 3 实现代理方法didReceiveLocalNotification 4 5 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{ 6 7 //在此时设置解析notification,并展示提示视图 8 9 } 10 11 第二步:创建本地推送 12 -

本地推送通知在iOS8上的不同

iOS8的不同点 你如果把上面的程序运行在iOS8上,会爆出如下错误 预习01-本地推送通知[掌握][615:7847] Attempting to schedule a local notification {fire date = Monday, July 13, 2015 at 9:02:25 AM China Standard Time, time zone = (null), repeat interval = 0, repeat count = UILocalNotification

本地推送通知小demo

本地推送通知: #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // 在iOS8之后,Apple对用户隐私要求更加严格,所

本地推送通知界面跳转demo

本地推送通知界面跳转demo: /* 1.在发送本地通知的时候,通过userInfo属性来指示跳转到那个界面 2.监听本地通知的接收 1.当收到本地通知就会调用该代理方法 调用场景 1.如果应用程序在后台,当点击通知的时候 2.如果应用程序在前台,一旦收到本地通知,就会调用该方法 所以:判断如果应用程序在前台时候,不要执行界面跳转,来提高用户体验 3.如果应用程序被杀死了,那么这个方法就不再执行了 //- (void)application:(UIApplication *)applicatio