ios通知_ios通知传值 - CSDN
精华内容
参与话题
  • iOS 通知(NSNotification)的简单使用

    万次阅读 2018-09-12 09:40:32
    通知:NSNotification,是iOS开发中一种重要的设计模式,它的实质是程序内部提供的一种广播机制。把接受到的消息根据内部消息转发表,将消息转发给需要的对象。 通知这种设计模式,在开发中常用来不同类之间的通信...

    通知:NSNotification,是iOS开发中一种重要的设计模式,它的实质是程序内部提供的一种广播机制。把接受到的消息根据内部消息转发表,将消息转发给需要的对象。

    通知这种设计模式,在开发中常用来不同类之间的通信,也就是常说的页面之间的传值。当然它不仅仅只有这一种应用场景,还有一种常用场景是用来控制一些属性或者控件,使得这些属性或控件在不同情况下发生响应的变化。在我以前的一个项目中就有这样的场景出现:

    项目需求:每次打开app和每次需要下载时监控网络状态变化,当时WiFi状态是打开自动下载开关,非WiFi状态时关闭自动下载开关。

    对于这样的需求,就可以使用通知去实现,而且很简单,只需要在需要发送通知的地方,注册、发送通知,在开关存在的地方接受通知消息,根据通知去控制开关是开启还是关闭。

    那么,下面介绍如何使用通知。

    首先先介绍一下几个类:

    1、NSNotification

    这个类是通知类,由这个类创建的对象是一个通知对象,也可以理解为是一个消息对象。类中有三个成员变量:

    name:是消息对象的唯一标识,接受通知消息时用来辨别

     

    @property (readonly,copy)NSNotificationName name;

    object:一个对象,可以理解为针对某个对象的消息

    @property (nullable,readonly,retain)id object;

    userInfo:一个字典,用来传值

    @property (nullable,readonly,copy)NSDictionary *userInfo;

     

    NSNotification初始化:

    对象方法初始化一个通知对象,并给通知对象的属性赋值

     

    - (instancetype)initWithName:(NSNotificationName)name object:(nullableid)object userInfo:(nullableNSDictionary *)userInfoNS_AVAILABLE(10_6, 4_0) NS_DESIGNATED_INITIALIZER;

    类方法创建一个通知对象,这个方法没有userInfo这个属性的初始赋值,所以用来发送无传值的通知

    + (instancetype)notificationWithName:(NSNotificationName)aName object:(nullableid)anObject;

    类方法初始化一个通知对象,并给通知对象的属性赋值

    + (instancetype)notificationWithName:(NSNotificationName)aName object:(nullableid)anObject userInfo:(nullableNSDictionary *)aUserInfo;

     

    注意:NSNotification不可以使用init进行初始化。

     

    2、NSNotificationCenter

    这个类是通知中心类,内部实现是单利模式,每个程序都有一个默认的通知中心,用来调度通知的发送和接受。

    通知中心类相关方法:

    a、接收通知的方法:

    添加观察者,可以指定一个方法、名称和对象,接受到通知时执行这个指定的方法。这里的name就是通知类的name,只有对应才能接受到通知。

     

    - (void)addObserver:(id)observer selector:(SEL)aSelector name:(nullableNSNotificationName)aName object:(nullableid)anObject;

     

    b、发送通知的方法:

     

    发送通知,参数是一个通知对象

     

    - (void)postNotification:(NSNotification *)notification;

    发送通知,参数是通知的名称,指定的对象

    - (void)postNotificationName:(NSNotificationName)aName object:(nullableid)anObject;

    发送通知,参数是通知的名称,指定的对象和传递的参数

    - (void)postNotificationName:(NSNotificationName)aName object:(nullableid)anObject userInfo:(nullableNSDictionary *)aUserInfo;

    上面这三个方法虽然写法不同,但是功能一样,使用哪一个方法取决于NSNotification类如何创建对象。后两种方法其实就是初始化通知并发送通知,将通知对象的初始化和发送方法结合。

     

    c、移除通知的方法:

    移除该检测对象(observer)下的所有通知

     

    - (void)removeObserver:(id)observer;

    根据通知名称(aName),移除该检测对象(observer)下的一个通知

    - (void)removeObserver:(id)observer name:(nullableNSNotificationName)aName object:(nullableid)anObject;

     

     

     

    一个通知的初始化,发送,接收。就是对上面这些方法的使用。

    下面,示例说明:

     

     

    #import "ViewController.h"

     

    @interface ViewController ()

    {

        UILabel *label;

        UIButton *button;

    }

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [superviewDidLoad];

        

        //创建视图方法

        [selfsetUI];

        //创建通知中心对象

        NSNotificationCenter *center = [NSNotificationCenterdefaultCenter];

        //注册、接收通知

        [center addObserver:selfselector:@selector(chanegeLabelText:)name:@"notification"object:nil];

    }

     

    - (void)setUI{

        label = [[UILabelalloc]initWithFrame:CGRectMake(100, 200, 200, 30)];

        label.backgroundColor = [UIColoryellowColor];

        label.text =@"没有接收到通知";

        [self.viewaddSubview:label];

        

        button = [UIButtonbuttonWithType:UIButtonTypeCustom];

        button.frame =CGRectMake(100, 300, 200, 30);

        [buttonsetTitle:@"发送通知"forState:UIControlStateNormal];

        [buttonsetBackgroundColor:[UIColorblueColor]];

        [buttonaddTarget:selfaction:@selector(post)forControlEvents:UIControlEventTouchUpInside];

        [self.viewaddSubview:button];

    }

     

    //按钮点击方法

    - (void)post{

        //初始化一个通知对象,名称是 notification  没有指定对象  穿的值是一个字典@{@"key":@"an object"}

        NSNotification *notification = [NSNotificationnotificationWithName:@"notification"object:niluserInfo:@{@"key":@"接收到了通知"}];

        

        [[NSNotificationCenterdefaultCenter]postNotification:notification];

    }

     

    //接收通知后调用的方法

    - (void)chanegeLabelText:(NSNotification *)noti{

     

        //这个方法的参数就是发送通知postNotification:方法的参数发送过来额通知。当要使用传递的userInfo的时候,就要使用noti解析出userInfo中需要的字段

        label.text = [noti.userInfoobjectForKey:@"key"];

    }

     

     

    - (void)viewDidDisappear:(BOOL)animated{

       [super viewDidDisappear:animated];

        //在页面消失的回调方法中移除通知。

        [[NSNotificationCenterdefaultCenter]removeObserver:selfname:@"notification"object:nil];

    }

     

    @end

    点击按钮前:                      点击按钮后:

          

    在上面的显示中可以看到代码没有问题。

    上面的示例只是为了介绍通知的使用而写的,在实际开发中并不会有这样实现功能的做法。通知的使用是为了实现不同控制器,或者不同类之间的通信从而实现一些解耦。在同一个类中一般是没有信息传递的。

    而且,要牢记一点,通知既然是程序内部的一种广播机制,那么它的存在就是通信。

    关于通知的使用就是,注册、接收通知(addObserver)--->发送通知(postNotification)--->移除通知(removeObserver)。

    这里关于移除通知和前面的KVO那篇文章中移除KVO一样,要在合理的位置移除。

     

    展开全文
  • iOS通知用法

    千次阅读 2013-10-19 22:53:23
    要测试通知需要两个条件:真机和开发者帐号,不然没法测试。 对照如上图我们介绍文章后面的一些概念 1、Provider: 就是对应后面介绍的 PushMeBaby工程(用来向APNS发送消息) 2、APNS: Apple_Push_...

    要测试通知需要两个条件:真机和开发者帐号,不然没法测试。

    对照如上图我们介绍文章后面的一些概念

    1、Provider: 就是对应后面介绍的  PushMeBaby工程(用来向APNS发送消息)

    2、APNS: Apple_Push_Notification_Service 苹果消息推送服务器

    3、iphone:用来接受APNS下发下来的消息推送

    4、Client App: 对应后面提到的 PushClient 工程,安装在iphone上面的程序 (用来接收iphone传递APNS下发的消息到制定的一个客户端 app)

    -------------------------------------------------------------------------------------------------------------------------------------------------------

    介绍完以后几个概念以后,现在先申明下在以下的工程配置中要用到 苹果开发者帐号 去下载 aps_developer_identity.cer 然后重命名apns.cer放在 pushMeBaby工程中才可以顺利的配置好推送的一些功能。

    ----------------------------------------------------------------------------------------------------------------------------------------------------

    现在进入正题

    1、获取deviceToken

    在 PushClient工程的的main.m文件中的

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

    方法中获取到 deviceToken,用来填充在 PushMeBaby中向服务器发送信息
    2、获取在服务端所要的许可证 (要用到开发者帐号中的相关配置)
      1、    首先登录https://developer.apple.com/devcenter/ios/index.action  登录帐号
            

        2、 

             

       3、 

        4、下载 push ssl certificate 把原文件名称aps_developer_identity.cer -------->重命名为apns.cer

      5、下载下来的testpush.mobileprovision配置到工程中

    前期的工程配置和一些证书获取完毕以后我们要下载工程文件PushMeBaby 和 PushClient

    下载地址:

    http://download.csdn.net/source/3182374

    下载完成以后我们要做两个事情

    1、把刚才获取的apns.cer文件拷贝到pushMeBaby工程文件同级目录下

    2、把 pushClient安装到真机上运行后获取 deviceToken

    (其实就是 push client中

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

    {

    }

    中的deviceToken

    )

    记住然后在工程 pushMeBaby中用刚才获取的40为字符替换掉在

    ApplicationDelegate.m

    -(id)init

    {

    ...

    self.deviceToken = "刚才获取的deviceToken";

    }

    运行工程后如图

    其中如图上面的Device Token就是要push的机子

    然后运行pushMeBaby运行正常的话就可以看到如下的效果,APNS

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];
        
        // 启动时接收挂起时候收到的通知
        NSDictionary *remoteDic = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(0, 100, 320, 30)];
        lable.tag = 101;
        lable.backgroundColor = [UIColor redColor];
        lable.textColor = [UIColor whiteColor];
        if (remoteDic) {
            lable.backgroundColor = [UIColor purpleColor];
            lable.text = [[remoteDic objectForKey:@"aps"] objectForKey:@"alert"];
        }
        [self.window addSubview:lable];
        
        // 注册通知
        [application registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert];

        return YES;
    }

    // 接收到token
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken NS_AVAILABLE_IOS(3_0) {
        

        NSLog(@"deviceToken: %@", deviceToken);
        
    }
    // 发生错误
    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error NS_AVAILABLE_IOS(3_0) {
        NSLog(@"%@", error);
    }

    // 接收到远程通知,程序运行中接收
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo NS_AVAILABLE_IOS(3_0) {
        NSLog(@"%@", @"didReceiveRemoteNotification");

        UILabel *lable = (UILabel *)[self.window viewWithTag:101];
        lable.backgroundColor = [UIColor blackColor];
        lable.text = [[userInfo objectForKey:@"aps"] objectForKey:@"alert"];
        NSLog(@"%@", userInfo);
    }
    // 接收到本地通知
    - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification NS_AVAILABLE_IOS(4_0){
        NSLog(@"%@", @"didReceiveLocalNotification");
        NSLog(@"%@", notification);

    }

    - (void)applicationWillResignActive:(UIApplication *)application
    {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
    }

    - (void)applicationDidEnterBackground:(UIApplication *)application
    {
        // 活动的时候取消ICO图标数字
        [application setApplicationIconBadgeNumber:0];
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }


     
    展开全文
  • iOS 通知机制

    千次阅读 2016-04-24 16:05:21
    任何一个对象都可以向通知中心发布通知,描述自己在做什么,其他感兴趣的对象可以申请在某个特定通知发布时(或者在某个特定的对象发布通知时)收到通知![如下所示](http://img.blog.csdn.net/20160424124752621) **...

    1 通知的发布

    **通知中心(NSNotificationCenter)**
    每一个应用程序都有一个通知中心实例,专门来负责协助不同对象之间的消息通信
    任何一个对象都可以向通知中心发布通知,描述自己在做什么,其他感兴趣的对象可以申请在某个特定通知发布时(或者在某个特定的对象发布通知时)收到通知![如下所示](https://img-blog.csdn.net/20160424124752621)
    **通知(NSNotification)**
    一个完整的通知一般包含3个属性:
    
    - (NSString *)name;   //通知名称
        - (id)object;  // 通知发布者 (是谁要发布通知)
        - (NSDictionary *)userInfo; //一些额外的信息(通知发布者传递给通知接收者的信息内容)
    初始化一个通知对象
    
    + (instancetype) notificationWithName: (NSString *)aName object: (id)onObject;
    +  (instancetype) notificationWithName:(NSString *)aName object:(id)onObject userInfo:(NSDictionary *aUserInfo);
    - (instancetype)initWithName:(NSString *)aName object:(id) object userInfo: (NSDictionary *)userInfo;
    **发布通知**
    通知中心提供了相应的方法来发布通知
    
    - (void) postNotification:(NSNotification *)notification; //发布一个notification通知,可在notification最想中设置通知的名称、通知发布者,额外信息等
        - (void) postNotificationName:(NSString *)aName object:(id)anObject;//发布一个名称为aName的通知,anObject为这个通知的发布者
        - (void)postNotificationName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary  *)aUserInfo; //发布一个名称为aName的通知,anObject为这个通知的发布者,aUserInfo为额外信息

    2 通知的监听

    **注册通知监听器**
    通知中心提供了方法来注册一个监听通知的监听器(observer)
    - (void) addObserver:(id) observer selector: (SEL) aSeletor name: (NSString *)aName object: (id)anObject;
    //observer:监听器,谁要接听这个通知
    //aSelector: 收到通知后,回调监听器的这个方法,并且把通知对象当做参数传入
    // aName:通知的名称,如果为nil ,那么无论通知的名称是什么,监听器都能收个这个通知
    //anObject:通知发布者,如果为anObject和aName都为nil,监听器都受到所有的通知
    
    
    
    
    - (id) addObserverForName:(NSString *)name object: (id)obj queue: (NSOperationQueue *)queue usingBlock: (void (^)(NSNotification *note))block;
    //name : 通知的名称
    //obj: 通知发布者
    //block:收到对应的通知时,会回调哪个block
    //queue: 决定了block在哪个操作队列中执行,如果传nil,默认在当前队列中同步执行。
    

    3.通知的移除

    通知中心不会保留监听器对象,在通知中心注册过的对象,必须在该对象释放前取消注册,否则,当相应的通知再次出现时,通知中心仍然会向该监听器发送消息,因为相应的监听器对象已经被释放了,所以可能导致应用崩溃
    取消注册监听器:
    通知中心不会保留监听器对象,在通知中心注册过的对象,必须在该对象释放前取消注册,否则,在相应的通知再次出现时,通知中心仍然会向该监听器发送通知,但是相应的监听器已经被释放啦,这就有可能导致应用崩溃

    -(void) removeObserver: (id) observer;
    -(void) removeObserver:(id) observer name: (NSString *)aName (id) object;般在监听器销毁之前取消注册

    - (void) dealloc {
        [[NSNotificationCenter defaultCenter] removeObserver : self];
    }

    举个栗子

    举一个杂志公司送杂志的例子

    我新建两个类,一个是CZPerson类,一个是CZCompany 类,各定义一个name属性
    如图所示

    由person对象订阅company的通知,然后company发布通知,
    这里写图片描述

    person收到通知后调用receiveMagazine方法:
    这里写图片描述

    取消监听:

    这里写图片描述

    运行:

    这里写图片描述

    系统中使用了很多通知的例子

    1. UIDevice通知:
      UIDevice类提供了一个单例对象,它代表着设备,通过它可以获得一些设备相关的信息,比如电池电量值(batteryLevel)、电池状态(batteryState)、设备的类型(model,比如iPod、iPhone等)、设备的系统(systemVersion)

    通过[UIDevice currentDevice]可以获取这单例对象

    UIDevice对象会不间断地发布一些通知,下列是UIDevice对象所发布通知的名称常量:
    UIDeviceOrientationDidChangeNotification // 设备旋转
    UIDeviceBatteryStateDidChangeNotification // 电池状态改变
    UIDeviceBatteryLevelDidChangeNotification // 电池电量改变
    UIDeviceProximityStateDidChangeNotification // 近距离传感器(比如设备贴近了使用者的脸部)

    1. 键盘通知:

    键盘状态改变的时候,系统会发出一些特定的通知
    UIKeyboardWillShowNotification // 键盘即将显示
    UIKeyboardDidShowNotification // 键盘显示完毕
    UIKeyboardWillHideNotification // 键盘即将隐藏
    UIKeyboardDidHideNotification // 键盘隐藏完毕
    UIKeyboardWillChangeFrameNotification // 键盘的位置尺寸即将发生改变
    UIKeyboardDidChangeFrameNotification // 键盘的位置尺寸改变完毕

    系统发出键盘通知时,会附带一下跟键盘有关的额外信息(字典),字典常见的key如下:
    UIKeyboardFrameBeginUserInfoKey // 键盘刚开始的frame
    UIKeyboardFrameEndUserInfoKey // 键盘最终的frame(动画执行完毕后)
    UIKeyboardAnimationDurationUserInfoKey // 键盘动画的时间
    UIKeyboardAnimationCurveUserInfoKey // 键盘动画的执行节奏(快慢)

    通知和代理的相同点和不同点:

    共同点
    利用通知和代理都能完成对象之间的通信
    (比如A对象告诉D对象发生了什么事情, A对象传递数据给D对象)

    不同点
    代理 : 一对一关系(1个对象只能告诉另1个对象发生了什么事情)
    通知 : 多对多关系(1个对象能告诉N个对象发生了什么事情, 1个对象能得知N个对象发生了什么事情)

    展开全文
  • iOS通知的使用NSNotificationCenter

    万次阅读 2016-06-04 13:47:26
    在实际的开发中,通知这一手段还是比较常用的。那今天就详细讲讲通知。 1.通知中心(NSNotificationCenter)实际是在程序内部提供了一种广播机制。把接收到的消息,根据内部的消息转发表,将消息转发给需要的对象。这...

    在实际的开发中,通知这一手段还是比较常用的。那今天就详细讲讲通知。

    1.通知中心(NSNotificationCenter)实际是在程序内部提供了一种广播机制。把接收到的消息,根据内部的消息转发表,将消息转发给需要的对象。这句话其实已经很明显的告诉我们要如何使用通知了。第一步:在需要的地方注册要观察的通知,第二步:在某地方发送通知。(这里注意:发送的通知可能是我们自定义的,也可能是系统的)。


    2. 具体如何使用通知:

    比如在某个控制器中需要观察某通知,那么代码如下:




    在需要发送通知的地方代码如下:



    已经是一目了然了。但是还没结束,千万不要忘了在注册观察通知的控制器的dealloc方法中移除要观察的通知。这是因为,当控制器因为某些原因比如内存问题而被销毁的时候,通知中心被注册的该通知还是存在的,而当其他有地方发送该通知的时候,通知中心会继续转发,但是转发的对象已经不存在了,这时候就会crash了。


    所以说,良好的编码习惯还是很重要的,能够避免一些不必要的麻烦。


    3.有些同学可能习惯会在viewWillAppear和viewWillDisappear方法中配对使用,比如这样:


    也无可厚非,不过这两个方法属于会被“经常调用”的方法,比如左滑右滑的时候会重复调用,还是要多考虑一下业务逻辑,避免不必要的坑。


    个人还是建议在viewDidLoad中注册通知,在dealloc中移除通知。

    ==》有些同学可能会发现,在某个ViewController中,没有移除通知好像也没有发生过crash。是的,这是因为在viewController被销毁的时候,它帮我们调用了remove方法。想去证明的同学可以新建一个分类,覆盖系统的removeObserver方法,会发现在controller销毁的时候调用了我们重写的remove方法。

    展开全文
  • iOS - 通知

    千次阅读 2018-06-17 08:47:23
    // 创建通知的两种形式 //[NSNotification notificationWithName:<#(nonnull NSString *)#> object:<#(nullable id)#>] //[NSNotification notificationWithName:<#(nonnull NSString *)#> object...
  • iOS通知的例子

    2019-03-13 17:21:49
    通知iOS中的一种消息传递方式,通过消息中心(NSNotificationCenter)对消息的监听,当某些类发送出消息的时候,消息中心监听到这些消息,然后进行相应的操作,这些操作对于发送出这些消息的类来说是相同的。...
  • iOS中一个调度消息通知的类,采用单例模式设计,在程序中实现传值、回调等地方应用很广。在iOS中,NSNotification & NSNotificaitonCenter是使用观察者模式来实现的用于跨层传递消息。 2、什么情况下使用通知 ...
  • IOS 新消息通知提示-声音、震动

    万次阅读 2013-08-12 11:48:32
    IOS 新消息通知提示-声音、震动,分APNS和程序内播放两种。
  • 这个分为3种情况 ... ... 3. 当APP在后台运行时,不会有通知栏提醒,也就不会跳转到指定界面 针对1.的处理- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(N
  • 点击通知栏的通知进入程序时,会触发App Delegate里的方法,分为以下两种情况:1、程序未启动(即底部任务栏里没有进程)时:此种情况下,点击通知栏的通知进入程序,会触发以下方法?1- (BOOL)application:...
  • 在开发过程中, 如果顾客打开推送开关的时候,也已经向服务器发送指令,进行推送开关同步,给它说这个用户已经打开了A推送,现在服务器推送A推送给客户端, 这时候照说,客服端是可以收到通知的,但是客服端却没有...
  • iOS8相对于iOS9的一些bug

    万次阅读 2016-12-16 13:55:04
    1.属性字符串的换行样式设置首行缩进后,计算属性字符串相应大小没有相应改变。 2.设置UIScrollView的属性contentOffset,容易导致崩溃。
  • iOS应用在前台时弹出本地通知

    千次阅读 2017-09-21 09:09:56
    iOS应用在前台时弹出本地通知在appdelegate中实现如下方法//iOS10新增:处理前台收到通知的代理方法 -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *...
  • ios 监听注册通知 移除通知

    千次阅读 2019-05-06 18:00:05
    //通知 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; //注册通知 [center addObserver:self selector:@selector(textValueChanged:) name:UITextFieldTextDidChangeNotification o...
  • IOS10系统 app没有出现在系统设置-通知列表处理 app 有推送功能,安装后却没有出现在 系统设置-通知列表 处理 App推送收不到,使用 [[UIApplication sharedApplication] isRegisteredForRemoteNotifications] 检测通...
  • iOS 判断是否开启定位+ (BOOL)isLocationServiceOpen { if ([ CLLocationManager authorizationStatus] == kCLAuthorizationStatusDenied) { return NO; } else ...}iOS 判断是否允许消息通知+ (BOOL)
  • iOS 横竖屏监听通知

    千次阅读 2016-06-30 16:29:05
    iOS横竖屏通知有两种,一种监听设备横竖屏状态,另一种监听状态栏横竖屏状态。与布局有关一般使用第二种,因为如果一个viewcontroller不支持自动旋转,当设备由竖屏转横屏时依然会执行监听设备横竖屏的通知方法。 ...
  • typedef NS_OPTIONS(NSUInteger, UIRemoteNotificationType) { UIRemoteNotificationTypeNone = 0, UIRemoteNotificationTypeBadge = 1 , UIRemoteNotificationTypeSound = 1 , UIRe
  • IOS 观察者模式

    万次阅读 2012-07-17 14:16:40
    Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。每次指定的被观察的对象的属性被修改后,KVO自动通知相应的观察者。 model中的定义: @interface StockData : ...
  • #pragma mark iOS 10 前台收到通知(远程推送 和 本地通知) - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification ...
1 2 3 4 5 ... 20
收藏数 87,524
精华内容 35,009
关键字:

ios通知