美文网首页iOS那些坑
iOS添加本地方法

iOS添加本地方法

作者: zgsddzwj | 来源:发表于2017-08-17 18:40 被阅读13次

    添加本地通知需要进入项目的project->Capabilities把Push Notifications打开,并添加一下方法,注意ios8后,需要添加注册,才能得到授权

    // 设置本地通知
    -(void)registerLocalNotificationWithTime:(NSTimeInterval)startTime notifiTitle:(NSString *)title notifiText:(NSString *)text key:(NSString *)key
    {
        //避免重复添加
        [self cancelLocalNotificationWithKey:key];
        
        if (startTime <= 0)//返回的时间点小于当前时间,不弹
        {
        return;
        }
        
    
        UILocalNotification *notification = [[UILocalNotification alloc] init];
        // 设置触发通知的时间
        NSDate *fireDate = [NSDate dateWithTimeIntervalSince1970:startTime];
        fireDate = [NSDate dateWithTimeIntervalSinceNow:startTime];
        
        notification.fireDate = fireDate;
        // 时区
        notification.timeZone = [NSTimeZone defaultTimeZone];
        // 通知内容
        notification.alertBody = text;
        notification.applicationIconBadgeNumber ++;
        // 通知被触发时播放的声音
        notification.soundName = UILocalNotificationDefaultSoundName;
        // 通知参数
        
        NSDictionary *notificationDic = @{@"key":key ?:@"", @"title":title?:@"",@"content":text?:@""};
        
        NSDictionary *userDict = [NSDictionary dictionaryWithObject:notificationDic forKey:@"userInfo"];
        notification.userInfo = userDict;
        
        // 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;
        }
        
        // 执行通知注册
        [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    }
    
    

    在appDelegate中:

            UILocalNotification *localNotif =
            [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
            if (localNotif) {
                
                NSDictionary *notDic = [localNotif.userInfo objectForKey:@"userInfo"];
                //    ASSERT_Class(notDic, NSDictionary);
                NSString *notKey = [notDic safe_stringForKey:@"key"];//直播 master_id
                self.liveKey = notKey;
    
                [__LiveManager jumptoNextPageWithMasterId:notKey vc:__lolita.topVC completeBlock:nil];
                // 更新显示的徽章个数
                NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
                badge--;
                badge = badge >= 0 ? badge : 0;
                [UIApplication sharedApplication].applicationIconBadgeNumber = badge;
            }
    

    相关文章

      网友评论

        本文标题:iOS添加本地方法

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