ios 开发之本地推送

网络推送可能被人最为重视,但是本地推送有时候项目中也会运用到;

闲话少叙,代码如下:

1、添加根视图

self.window.rootViewController = [[UINavigationController alloc]initWithRootViewController:[[ViewController alloc]init]];

    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

2、本地创建一个button进行触发

button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(20, 100, WIDTH - 40, 50);
    button.backgroundColor = [UIColor blueColor];
    [button setTitle:@"开始啦" forState:UIControlStateNormal];
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
    //绑定方法
    [button addTarget:self action:@selector(noticClick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];

3、注册一个通知

//设置本地通知 传一个时间进去
+ (void)registerLocalNotification:(NSInteger)alertTime
{
    UILocalNotification *notification = [[UILocalNotification alloc]init];
    //设置触发通知的时间
    NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:alertTime];
    NSLog(@"fireDate=%@",fireDate);

    notification.fireDate = fireDate;
    //时区
    notification.timeZone = [NSTimeZone defaultTimeZone];
    //设置重复的间隔
    notification.repeatInterval = kCFCalendarUnitSecond;

    //通知内容
    notification.alertBody = @"该起床了...";
    notification.applicationIconBadgeNumber = 1;
    //通知被触发时播放的声音
    notification.soundName = UILocalNotificationDefaultSoundName;
    //通知参数
    NSDictionary *userDict = [NSDictionary dictionaryWithObject:@"起床了,开始学习了ios开发了" forKey:@"key"];
    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];

}

4、调用这个方法

-(void)noticClick:(id)sender
{
    //调用通知
    [ViewController registerLocalNotification:4];//4秒钟后
}

5、取消通知的方法

//取消某个本地推送通知
+(void)cancelLocalNotificationWithKey:(NSString *)key
{
    //获取所有本地通知数组
    NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;

    for (UILocalNotification *notification in localNotifications) {
        NSDictionary *userInfo = notification.userInfo;
        if (userInfo) {

            //根据设置通知参数时指定的key来获取通知参数
            NSString *info = userInfo[key];

            //如果找到需要取消的通知,则取消
            if (info != nil) {
                [[UIApplication sharedApplication]cancelLocalNotification:notification];
                break;
            }

        }
    }
}

6、调用这个方法

//本地通知回调函数,当应用程序在前台时调用
-(void)application:(UIApplication *)application didReceiveLocalNotification:(nonnull UILocalNotification *)notification
{
    NSLog(@"notif:%@",notification);

    //这里真是需要处理交互的地方
    //获取通知所带的数据
    NSString *notMes = [notification.userInfo objectForKey:@"key"];
    UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"本地通知(前台)" message:notMes delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];

    //更新显示的角标个数
    NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
    badge--;
    badge = badge >= 0 ? badge : 0;
    [UIApplication sharedApplication].applicationIconBadgeNumber = badge;

    //在不许要再推送时,可以取消推送
    [ViewController cancelLocalNotificationWithKey:@"key"];
}
时间: 2024-07-30 13:51:55

ios 开发之本地推送的相关文章

iOS开发之本地推送、接收到推送的方法

我们有时候有需要本地通知的功能 本地推送通知也需要申请推送通知权限,具体步骤可看我的上一篇博客(关于推送权限申请) 1.添加本地推送的方法,需要判断iOS10.0和iOS8.0不同的方法 #import <UserNotifications/UserNotifications.h> /** 添加本地推送通知*/ + (void)addLocalNotificationWithTitle:(NSString *)title subTitle:(NSString *)subTitle body:(

iOS 10 添加本地推送(Local Notification)

前言 iOS 10 中废弃了 UILocalNotification ( UIKit Framework ) 这个类,采用了全新的 UserNotifications Framework 来推送通知,从此推送通知也有了自己的标签 UN (这待遇真是没别人了),以及对推送功能的一系列增强改进(两个 extension 和 界面的体验优化),简直是苹果的亲儿子,因此推送这部分功能也成为开发中的重点. 本文主要查看了 iOS 10 的相关文档,整理出了在 iOS 10 下的本地推送通知,由于都是代码,

iOS开发利用系统推送Notifaction和轮询实现简单聊天系统

话不多说,先看一下做好的聊天软件界面: 首先在StoryBoard里拖了一个UItableView和一个view用来输入文字或者语音,右边的按钮用来切换文字和语音: 聊天里有三种id: orderID :聊天id messageID :每条消息的ID sessionID :每个订单的会话ID,如果为空通过orderID请求. 然后在viewDidLoad里做一些界面上的操作和一些初始化的操作: 1.设置一下tableview的headView 2.初始化录音.用户头像.获取订单详情 <stron

ios如何实现本地推送,兼容ios8

如果要兼容IOS8在IOS中实现本地推送,关键是要注意:ios8在实现本地推送时需要通过如下语句进行注册. [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; 至于IOS8之前版本的做法就不多说了,直接上代码.新建oc类文件(NotificationHelper),在NotificationHelper.h中声明相关方法如下: #import <UIKit/UIKit.h> @inte

iOS开发——远程消息推送的实现

在我们使用App的过程中.总是会收到非常多的消息推送.今天我们就要来实现这个功能.首先消息推送分为本地消息推送和远程消息推送.而当中又以远程消息最为经常使用. 可是在推送远程消息之前.有两个前提条件.你须要购买苹果的开发人员账号,也就是每年99刀:而且有一台iOS真机(模拟器不能測试推送).事实上远程推送须要有server,可是我们自己临时没有server,到时候后台使用Parse进行推送. 实现过程例如以下: (1)进入苹果的开发人员站点:https://developer.apple.com

iOS开发证书及推送证书的生成教程

以下是我自己摸索出来的证书生成过程,如有错误欢迎指正~ 一.生成开发证书 这里的证书包括开发(development)证书和生产(production)证书. 1.打开钥匙串访问-->证书助理-->从证书颁发机构请求证书,输入邮箱和常用名,常用名将作为你的密钥名,选择保存到磁盘,名字默认就可以,存到桌面. 2.登录苹果的开发者中心,登录自己的开发者账号进入,选择证书. 单击这里的Development,(注意,这里最多同时存在2个证书)点击右上角的加号,选择iOS App Developmen

ios开发有关远程推送的测试版和正式发布版的区别

从接触ios开始,就偶尔听说开发时要用到MVC设计模式.但是,到现在为止,也没有正式接触和使用到真正的MVC,感觉这一年白学了一样,MVC正在研究中,以后有搞明白了会来进行分享的. 关于推送,本地的比较容易,网上的资料也会有很多. 关于远程的推送,就稍微有点麻烦了,有关证书的制作建议阅读英文原版教程http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1 这个应该是推送

iOS开发资源:推送通知相关开源项目--PushSharp、APNS-PHP以及Pyapns等

PushSharp  (github) PushSharp是一个实现了由服务器端向移动客户端推送消息的开源C#库,支持 iOS (iPhone/iPad APNS). Android (C2DM/GCM - Google Cloud Message).Windows Phone.Windows 8.Blackberry (BIS and BES via PAP)以及Amazon (ADM)设备,未来还将支持Firefox OS. PushSharp的API可以流畅地位不同平台创建消息,自适应消

iOS开发之远程推送Push

远程推送通知 什么是远程推送通知 顾名思义,就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(Apple Push Notification Services) 为什么需要远程推送通知 传统获取数据的局限性 只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容 远程推送通知可以解决以上问题 不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知 远程推送通知使用须知 所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接