iOS 通知notification

主要有三种通知:
广播通知(broad notification)
本地通知(local notification)
推送通知即远程通知(push notification)

广播通知
将要接受通知的对象需要向通知中(NSNotificationCenter) 注册,当投放对象投送通知给通知中心时,通知中心就会把通知广播给注册过的接受者,当观察者不再观察时,则移除

  • 发布通知postNotification…
  • 添加观察者addObserver…
  • 不再关注removeObserver

本地通知

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;



    //本地通知
    UILocalNotification *notification=[[UILocalNotification alloc] init];
    if (notification!=nil) {
        [[UIApplication sharedApplication] cancelAllLocalNotifications];

        NSDate *now=[NSDate new];
        notification.fireDate=[now dateByAddingTimeInterval:10]; //触发通知的时间
        notification.repeatInterval = kCFCalendarUnitMinute;     //循环次数,kCFCalendarUnitWeekday一周一次

        notification.timeZone=[NSTimeZone defaultTimeZone];
        notification.soundName = UILocalNotificationDefaultSoundName;
        notification.alertBody=@"哈哈哈哈哈";               //若alertBody不为nil,则显示alert

        //在模拟器上暂时还没有测试出以下两个属性的作用
        notification.alertAction = @"打开";  //显示alert右侧提示按钮
        notification.hasAction = YES;       //默认为YES,是否显示额外的按钮,为no时alertAction消失

        notification.applicationIconBadgeNumber = 1; //设置app图标右上角的数字

        //下面设置本地通知发送的消息,这个消息可以接受
        NSDictionary* infoDic = [NSDictionary dictionaryWithObject:@"value" forKey:@"key"];
        notification.userInfo = infoDic;
        //发送通知
        [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    }


    [self.window makeKeyAndVisible];
    return YES;
}

远程通知
远程推送服务,APNs(apple push notification servers)
所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接
过程:

  • 客户端的app需要将用户的UDID和app的bundleID发送给apns服务器,进行注册,apns将加密后的device Token返回给app
  • app获得device Token后,上传到公司服务器
  • 当需要推送通知时,公司服务器会将推送内容和device Token一起发给apns服务器

PS:

例:保证self定义了aWindowBecameMain:方法。而对于一个任意的观察者observer,不能保证其对应的selector有aWindowBecameMain:,可采用[observer respondsToSelector:@selector(aWindowBecameMain:)]] 进行检查。所以完整的添加观察者过程为:if([observer respondsToSelector:@selector(aWindowBecameMain:)]) {
 [[NSNotificationCenter defaultCenter] addObserver:observer selector:@selector(aWindowBecameMain:) name:NSWindowDidBecomeMainNotification object:nil];
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值