iOS8+ 本地通知

作者: ProgressChen | 来源:发表于2016-06-26 23:50 被阅读922次

    从iOS8开始,通知被加入了新的特性。简单地说,从现在开始,当一个通知被展示时,开发者可以指定用户可触发的具体的动作(actions),而且甚至不用启动App也可以处理这个通知。

    有几种方式来提示用户一个通知,接下来会展示所有支持的通知类型。正如你已经了解的,你可以指定通知类型为他们中的几个或者所有。

    1. Alert or Banner:通知可以用alert或者banner来显示,这取决于用户在设置中得选择。他们都应当包含通知的消息(当然是可以本地化的)。
    2. 声音(Sound):当一个通知被送达时,你可以‘告诉’iOS播放一段自定义或者系统默认的声音。因为用户不会一直看着设备,被展示的通知有可能会被忽略,所以声音显得很有用。但是,对于不重要的通知,声音不应该被使用。
    3. Badge:当通知到达时,一个badge数字会在App的图标上显示。当一个通知到达时,badge数字必增加1,当通知被处理后badge数字减1。当badge数字不为0或者为0,iOS会显示或者隐藏badge。

    在iOS8之后,以前的本地推送写法可能会出错,接收不到推送的信息,
    如果出现以下信息:

    1 Attempting to schedule a local notification
    2 with an alert but haven't received permission from the user to display alerts
    3 with a sound but haven't received permission from the user to play sounds
    

    在IOS8下没有注册,所以需要额外添加对IOS8的注册方法,API中有下面这个方法:

    // Registering UIUserNotificationSettings more than once results in previous settings being overwritten.  
    - (void)registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings NS_AVAILABLE_IOS(8_0);  
    

    ios8后,需要添加这个注册,才能得到授权

      if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {  
        UIUserNotificationType type =  UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;  
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type  
                                                                                 categories:nil];  
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];  
        // 通知重复提示的单位,可以是天、周、月  
        notification.repeatInterval = NSCalendarUnitDay;  
      } else {  
        // 通知重复提示的单位,可以是天、周、月  
        notification.repeatInterval = NSDayCalendarUnit;  
      }
    

    本地通知回调函数,当应用程序在前台时调用,此方法在AppDelegate中

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

    在不需要再推时,可以取消推送cancelLocalNotificationWithKey:

    相关文章

      网友评论

        本文标题:iOS8+ 本地通知

        本文链接:https://www.haomeiwen.com/subject/wolzdttx.html