消息推送——本地推送

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息推送——本地推送相关的知识,希望对你有一定的参考价值。

消息推送分两种:

    1.本地推送(Local Notification)

    2.远程推送(Remote Notification)

消息推送的作用

    可以让APP不在前台,告知用户APP内部发生了什么

消息推送的效果

    1.没有效果

    2.横幅 在屏幕的顶部显示具体内容

    3.提醒 UIAlertController 在屏幕中间显示具体内容

    4.在锁屏的时候显示一块横幅 在手机的设置里面对它进行不同的效果设置

    5.可以更改APP图标上面显示的提醒数字 

注意:发送推送通知的时候,如果APP在前台运行,那么推送的通知不会被呈现出来 在发送通知之后,无论APP是打开,还是关闭,推送都能如期发出,但是用户不一定能如期去接收 

但在ios8之后需要注册。

 

首先在AppDelegate.m文件里面需要判断版本信息根据版本信息是否大于8.0设置推送样式,具体代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

      /*

     推送通知的样式

     UIUserNotificationTypeNone   没有样式

     UIUserNotificationTypeBadge  改变应用右上角数字

     UIUserNotificationTypeSound  带声音

     UIUserNotificationTypeAlert  弹出框提示

     */

    

    //判断版本信息是否大于8.0 设置推送的样式

    if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) {

        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories: nil];

        

        //注册通知对象

        [application registerUserNotificationSettings:settings];

    }

    

    //用作点击推送时跳转

    if (launchOptions [UIApplicationLaunchOptionsLocationKey]) {

        

        UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 400, 200, 100)];

        label.text = [NSString stringWithFormat:@"%@",launchOptions];

        label.backgroundColor = [UIColor lightGrayColor];

        label.font = [UIFont systemFontOfSize:14];

        label.numberOfLines = 1;

        [self.window.rootViewController.view addSubview:label];

    }

    

    return YES;

}

 

//点击通知打开应用的时候会执行该方法 在前台收到通知的时候也会调用该方法

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{

    

    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 400, 200, 100)];

    label.backgroundColor = [UIColor lightGrayColor];

    label.font = [UIFont systemFontOfSize:14];

    label.numberOfLines = 1;

    [self.window.rootViewController.view addSubview:label];

}

 

在ViewController.m文件通过button去触发本地消息发送对象,来实现本地消息推送

- (void)viewDidLoad {

    [super viewDidLoad];

   

    //通过Button去触发本地消息发送对象

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

    button.frame = CGRectMake(100, 100, 100, 50);

    [button setTitle:@"添加通知" forState:UIControlStateNormal];

    button.backgroundColor = [UIColor brownColor];

    button.layer.cornerRadius = 6;

    [button addTarget:self action:@selector(doit:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];

 

    //移除消息推送

    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeCustom];

    button1.frame = CGRectMake(100, 200, 100, 50);

    [button1 setTitle:@"移除通知" forState:UIControlStateNormal];

    button1.backgroundColor = [UIColor brownColor];

    button1.layer.cornerRadius = 6;

    [button1 addTarget:self action:@selector(remove) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button1];

}

 

- (void)doit:(UIButton *)sender{

    

    //1.创建一个本地通知对象

    UILocalNotification *LocalNotification = [[UILocalNotification alloc]init];

    

    //2.设置具体属性

    

    //2.1设置通知发送的时间

    LocalNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:3];

    

    //2.2设置通知发送的内容

    LocalNotification.alertBody = @"主人来消息了";

    

    //2.3设置是否显示提示框

    LocalNotification.hasAction = YES;

    

    //2.4设置提示框

    LocalNotification.alertAction = @"快来查看";

    

    //2.5设置APP提示的数字

    LocalNotification.applicationIconBadgeNumber = 123;

    

    //2.6设置应用提示的声音

    LocalNotification.soundName = UILocalNotificationDefaultSoundName;

    

    //3.去调度本地推送通知

    [[UIApplication sharedApplication]scheduleLocalNotification:LocalNotification];

    [[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];

}

  

//移除消息推送的方法

- (void)remove{

       [[UIApplication sharedApplication]cancelAllLocalNotifications];

}

 

以上是关于消息推送——本地推送的主要内容,如果未能解决你的问题,请参考以下文章

FAQHMS Core推送服务与本地创建通知消息如何相互覆盖?

推送通知显示本地化常量而不是消息

ios 本地通知与消息推送

ios 本地通知与消息推送

将所有从“Firebase 推送通知”接收的消息存储在移动数据库/本地

iOS 推送通知本地化