本地推送

#import "BaseViewController.h"

@interface NotificagtionViewController :
BaseViewController

// 设置本地通知

+ (void)registerLocalNotification:(NSInteger)alertTime;

+ (void)cancelLocalNotificationWithKey:(NSString *)key;

@property (weak,
nonatomic) IBOutlet
UIButton *mybutton;

@property (weak,
nonatomic) IBOutlet
UITextField *mytext;

@end

#import "NotificagtionViewController.h"

@interface
NotificagtionViewController ()<UITextFieldDelegate>

@end

@implementation NotificagtionViewController

- (void)viewDidLoad {

    [super
viewDidLoad];

    

    

    

    // Do any additional setup after loading the view.

}

- (void)didReceiveMemoryWarning {

    [super
didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

- (BOOL)textFieldShouldReturn:(UITextField *)textField{

    [self.view
endEditing: YES];

    return 
YES;

}

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    [self.view
endEditing: YES];

}

// 设置本地通知

+ (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 = 
@"adfdsafsagsdfsebsd";

    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];

}

- (IBAction)gopush:(UIButton *)sender {

    [NotificagtionViewController
registerLocalNotification:3];// 3秒后

}

// 取消某个本地推送通知

+ (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;

            }

        }

    }

}

@interface
AppDelegate ()

// 本地通知回调函数,当应用程序在前台时调用

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

    NSLog(@"noti:%@",notification);

    

   
// 这里真实需要处理交互的地方

   
// 获取通知所带的数据

    NSString *notMess = [notification.userInfo
objectForKey:@"key"];

    UIAlertView *alert = [[UIAlertView
alloc]
initWithTitle:@"本地通知(前台)"

                                                    message:notMess

                                                   delegate:nil

                                          cancelButtonTitle:@"OK"

                                          otherButtonTitles:nil];

    [alert show];

    

   
// 更新显示的徽章个数

    NSInteger badge = [UIApplication
sharedApplication].applicationIconBadgeNumber;

    badge--;

    badge = badge >= 0 ? badge :
0;

    [UIApplication
sharedApplication].applicationIconBadgeNumber = badge;

    

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

    [NotificagtionViewController
cancelLocalNotificationWithKey:@"key"];

}

时间: 2024-11-03 04:40:43

本地推送的相关文章

iOS 如何使用iTunes里面的音乐作为本地推送的声音 在线等 急!!!

问题描述 iOS 如何使用iTunes里面的音乐作为本地推送的声音 在线等 急!!! 5C RT 求大神的解答步骤应该先从iTunes里面导出音乐到APP里面然后使用的是本地推送网易云音乐里面的音乐闹钟就实现了这个需求 我现在做到了把iTunes里面的音乐导入到APP中 现在就是不知道如何设置这个音乐为本地推送的声音 解决方案 http://stackoverflow.com/questions/6894026/how-to-set-sound-local-notification-from-s

iOS本地推送(本地通知)

在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 说明在I

周一到周五重复推送-iOS本地推送设置周一到周五推周末不推怎么实现呢

问题描述 iOS本地推送设置周一到周五推周末不推怎么实现呢 iOS本地推送设置周一到周五推周末不推怎么实现呢,用到的是本地推送不是服务端的推送 解决方案 http://outofmemory.cn/code-snippet/2881/ios-bendi-tuisong-method 解决方案二: 获取下今天是星期几,代码: NSCalendar *calendar = [NSCalendar currentCalendar]; NSInteger unitFlags = NSWeekCalend

iPhone/iPad开发通过LocalNotification实现iOS定时本地推送功能_IOS

通过iOS的UILocalNotification Class可以实现本地app的定时推送功能,即使当前app是后台关闭状态.  可以实现诸如,设置app badgenum,弹出一个alert,播放声音等等,实现很简单  UILocalNotification *notification=[[UILocalNotification alloc] init]; if (notification!=nil) { NSDate *now=[NSDate new]; notification.fireD

iOS10添加本地推送(Local Notification)实例_IOS

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

iOS本地推送简单实现代码_IOS

本文为大家分解介绍了iOS本地推送代码的三步骤,供大家参考,具体内容如下 第一步:创建本地推送 // 创建一个本地推送 UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease]; //设置10秒之后 NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:10]; if (notification != nil) { // 设置推

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

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

iOS客户端本地推送实现代码_IOS

本文实例为大家分享了iOS本地推送的具体代码,供大家参考,具体内容如下 首先创建全局的本地通知对象及弹出框 // 弹出本地消息 @property(nonatomic,strong)UILocalNotification *localNotification; @property(nonatomic,strong)UIAlertController *alertcontrol; 其次在代码中实现如下: - (void)application:(UIApplication *)applicatio

本地推送-(void)didReceiveMessage;这个方法不执行

问题描述 本地推送-(void)didReceiveMessage;这个方法不执行 解决方案 需要判断// App进入后台- (void)applicationDidEnterBackground:(UIApplication *)application{[[EaseMob sharedInstance] applicationDidEnterBackground:application];}  这个方法执行了没有