ios 本地推送

关于iOS的本地推送,代码如下:

AppDelegate中需要对通知进行注册:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    // 如果应用程序在前台,将应用程序图标上红色徽标中数字设为0
    application.applicationIconBadgeNumber = 0;
    // 使用UIAlertView显示本地通知的信息
    [[[UIAlertView alloc] initWithTitle:@"收到通知"
                                message:notification.alertBody
                               delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil] show];
}

ViewController中定义了一个小按钮,来对通知进行控制:

#import "ViewController.h"

@interface ViewController ()
{
    UIApplication * app;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    app = [UIApplication sharedApplication];
}  
- (IBAction)swich:(id)sender {
    UISwitch * swich = (UISwitch *)sender;
    if(swich.on)
    {
        if([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)])
        {
            [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
        }
        //创建一个本地通知
        UILocalNotification * notification = [[UILocalNotification alloc]init];
        //设置一个通知触发时间
        notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
        //设置一个通知时区
        notification.timeZone = [NSTimeZone defaultTimeZone];
        // 设置通知的重复发送的事件间隔
        notification.repeatInterval = kCFCalendarUnitHour;
        // 设置通知的声音
//        notification.soundName = @"gu.mp3";
        //通知标题
        notification.alertTitle=@"世界颜值组织";
        // 设置当设备处于锁屏状态时,显示通知的警告框下方的title
        notification.alertAction = @"打开";
        // 设置通知是否可显示Action
        notification.hasAction = YES;
        // 设置通过通知加载应用时显示的图片
        notification.alertLaunchImage = @"logo.png";
        // 设置通知内容
        notification.alertBody = @"授予你全球最帅称号";
        // 设置显示在应用程序上红色徽标中的数字
        notification.applicationIconBadgeNumber = 1;
        // 设置userinfo,用于携带额外的附加信息。
        NSDictionary *info = @{@"bys": @"key"};
        notification.userInfo = info;
        // 调度通知
        [app scheduleLocalNotification:notification];  // ①
        
    }
    else
    {
        NSArray * localArray = [app scheduledLocalNotifications];
        if(localArray)
        {
            for (UILocalNotification * noti in localArray)
            {
                NSDictionary * dic = noti.userInfo;
                if(dic)
                {
                    NSString * inkey = [dic objectForKey:@"key"];
                    if([inkey isEqualToString:@"bys"])
                    {
                        [app cancelLocalNotification:noti];
                    }
                }
            }
        }
    }
}

可以对通知触发时的声音进行自定义

以上就是iOS的本地通知!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • @(〓〓 iOS-实用技术)[远程/本地推送] 作者: Liwx 邮箱: 1032282633@qq.com 目...
    Liwx阅读 8,600评论 6 28
  • iOS中通知机制又叫消息机制,其包括两类:一类是本地通知;另一类是推送通知,也叫远程通知。两种通知在iOS中...
    七里汀阅读 6,323评论 3 2
  • 概念 1.推送通知有5种不同的呈现效果 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertV...
    我是滕先生阅读 19,534评论 20 92
  • #正泰#《卫生巾之恋》下部 十八线小明星果✘迷弟大学生泰 脑洞来自一个白日梦。 田柾国居然上头条了! 金泰亨点开这...
    予落阅读 4,386评论 0 2
  • 我,究竟是一个什么样的人?不敢直面自己的缺点。每天在为自己的浑浑噩噩找借口。定下的计划永远没有实施的那一天。内心想...
    曼珠沙华开到荼蘼阅读 1,248评论 0 2