iOS本地推送的实现,兼容iOS8

AppDelegate.m中的代码

// AppDelegate.m中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 处理iOS8本地推送不能收到的问题
    float sysVersion=[[UIDevice currentDevice]systemVersion].floatValue;
    if (sysVersion>=8.0) {
        UIUserNotificationType type=UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound;
        UIUserNotificationSettings *setting=[UIUserNotificationSettings settingsForTypes:type categories:nil];
        [[UIApplication sharedApplication]registerUserNotificationSettings:setting];
    }
    return YES;
}
// 接收本地推送(AppDelegate.m中添加)
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"标题" message:notification.alertBody delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil];
    [alert show];

    // 图标上的数字减1
    application.applicationIconBadgeNumber -= 1;
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    // 直接打开app时,图标上的数字清零
    application.applicationIconBadgeNumber = 0;
}

在调用的类中添加的代码

// 进行推送的方法
// 设置本地推送参数,并进行推送
- (void)scheduleNotification{
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    //设置5秒之后
    NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:5];
    if (notification != nil) {
        // 设置推送时间(5秒后)
        notification.fireDate = pushDate;
        // 设置时区(此为默认时区)
        notification.timeZone = [NSTimeZone defaultTimeZone];
        // 设置重复间隔(默认0,不重复推送)
        notification.repeatInterval = 0;
        // 推送声音(系统默认)
        notification.soundName = UILocalNotificationDefaultSoundName;
        // 推送内容
        notification.alertBody = @"推送主体内容";
        //显示在icon上的数字
        notification.applicationIconBadgeNumber = 1;
        //设置userinfo 方便在之后需要撤销的时候使用
        NSDictionary *info = [NSDictionary dictionaryWithObject:@"name"forKey:@"key"];
        notification.userInfo = info;
        //添加推送到UIApplication
        UIApplication *app = [UIApplication sharedApplication];
        [app scheduleLocalNotification:notification];
    }
}
时间: 2024-08-24 09:06:34

iOS本地推送的实现,兼容iOS8的相关文章

UILocalNotification ios本地推送

Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程.本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notificati

iOS 本地推送

在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情. iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒 两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会 补充通知中心的内容避免初学者对两种概念的混淆. 简单些了一个关于

(七十三)iOS本地推送通知的实现

iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被杀掉后是无法执行的,这时候就要借助远程通知,通过苹果的服务器转发通知到手机,本文只介绍本地通知的用法. ①对于iOS8及以上的版本,需要注册本地通知才能使用,一般在AppDelegate中注册: if ([[UIDevice currentDevice].systemVersion doubleVa

iOS本地推送与远程推送详解

一.简介 分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程序也不会弹出该提示框,需要用户到设置里面设置.一共有三种提示类型: UIUserNotificationTypeBadge:应用图标右上角的信息提示 UIUserNotificationTypeSound:播放提示音 UIUserNotificationTypeAlert:提示框 二.本地推送 1

ios本地推送demo

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     // Override point for customization after application launch.     //应用图标数字     application.applicationIconBadgeNumber=6;          //申请用

iOS本地推送与远程推送

分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程序也不会弹出该提示框,需要用户到设置里面设置.一共有三种提示类型: UIUserNotificationTypeBadge // 应用图标右上角的信息提示 UIUserNotificationTypeSound // 播放提示音 UIUserNotificationTypeAlert  // 提示框 本地推送

[转载]iOS本地推送-备用

第一步:创建本地推送// 创建一个本地推送UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];//设置10秒之后NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:10];if (notification != nil) {    // 设置推送时间    notification.fireDate = pushDate

ios本地推送互动

?    小编只是一个小白,每个app都需要推送功能,个人觉得是基础中的基础,所以自学了下推送,并且写了点小demo,也是第一次发原创博客,还请各路大神批评指导. 信息推送可以让App尚未运行的状态下可以接受一些信息,通常的推送有苹果自带的APNS推送,这个方面的知识还请自行查询学习,本文只是针对本地推送互动方面,后续会单独写APNS推送的博文,还请持续关注! 推送信息文字主要出现四个位置:1.屏幕锁定画面:2.屏幕上方下拉的“通知区域”:3.解锁后屏幕最上方的横幅的位置:4解锁后的提示位置:解

iOS 本地推送 UILocalNotification

创建通知 UILocalNotification *notification = [[UILocalNotification alloc] init]; if (notification) { NSDate *now = [NSDate new]; notification.fireDate = [now dateByAddingTimeInterval:10]; //10秒后通知 notification.repeatInterval=0; //重复次数,kCFCalendarUnitWeek