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 本地推送)