iOS 2-本地推送

随着公司APP开发的相继完善,大家总有一天会接触到推送.

推送分两种:
1.本地推送
2.远程推送
---------------一条华丽的分割线--------------------------

本地推送

这篇给大家讲的是有关本地推送的最基础的用法.(因为楼主也只懂点皮毛.#)
本地推送,市面上许多APP都有用到.
正常都用在提醒用户来使用该APP的.
好久没用某APP的时候,通知中心就会跳出"客官,您已经一星期没玩我了,快来玩玩我吧!"之类的一些`牛盲~通知.(捂脸状)

Like this⬇️
C20AE574-7616-43CB-AC25-5EB140C66716.png

整理下发型,直接上代码.

这篇本地推送写的那细~.
请各位客官尽情的command+c+v吧.

首先~控制器里创建本地推送的代码.
(其实只需要1,2,3,4就可发送一则推送通知,其他都是废话0.0)

- (void)messageClick2:(UIBarButtonItem *)btn
{
    // 1.创建本地通知
    UILocalNotification *note = [[UILocalNotification alloc]init];
    // 2.设置通知的消息
    note.alertBody = @"客官,您已经一个星期没玩我了,快来玩玩我吧!";
    // 3.设置时间
    //    note.fireDate =  [NSDate dateWithTimeIntervalSince1970:3*60*60+7*60];// 每日提醒的时间是从早上8点开始的
    note.fireDate = [NSDate dateWithTimeIntervalSinceNow:2];// 从现在起 两秒钟之后
    // 4.添加通知    添加 通知,不是直接发出通知
    [[UIApplication sharedApplication] scheduleLocalNotification:note];
    
    // 这边以上即可发送一则本地推送通知,下面只是完善.

    /***********************一条华丽的分割线************************/
    // 时区
    note.timeZone = [NSTimeZone defaultTimeZone];
    // 重复
    note.repeatInterval = kCFCalendarUnitDay;// 每日 ,当然也可以调成每小时之类的.也可填数字,重复次数.
    // 角标
    note.applicationIconBadgeNumber = 1;
    // 设置当点击通知进程序的时候 启动,启动屏幕 如果图片找不到会显示默认的启动图片.但是好像ios9.0以后就失效了.
    note.alertLaunchImage = @"图片名称";
    // 这个锁屏状态是不会显示的,只对通知中心有效.ios8.2之后有效!!!
    note.alertTitle = @"MYAPP";
    // 滑动的时候 显示的字
    note.alertAction = @"回复";
    //这个是控制上面的显示不显示的 正常就是默认状态,一般不用改
    note.hasAction = YES;
    // 本地化通知的音效
    note.soundName= UILocalNotificationDefaultSoundName;
    // 或
    note.soundName = @".aac.MP3应该都行";
    // 设置  通知携带的信息
    note.userInfo = @{@"name":@"ksang"};
    // 5  有直接发出通知的   **********
//    [[UIApplication sharedApplication]presentLocalNotificationNow:note];
}

// 取消本地通知
- (void)cancelNote
{
    UIApplication *app  = [UIApplication sharedApplication];
    // 打印现有通知的个数
    NSLog(@"%ld",app.scheduledLocalNotifications.count);
    // 打印出现有的  Notification
    NSLog(@"currentUserNotificationSettings --------- %@",app.scheduledLocalNotifications);
    // 移除所有本地通知
    [[UIApplication sharedApplication]cancelAllLocalNotifications];
}

各位客官请注意 iOS8.0 之后本地通知需要注册,发送才有效.

正常写在 代理 的didFinishLaunching里.

下面是~AppDelegate.mm中的代码

didFinishLaunching 里面可以根据 launchOptions 中的note 判断是否是从icon进来的,还是通过推送进来的
// didFinishLaunching
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // 注册本地通知
    [self registerUserNotification];

//   创建一个推送。。来接受launchOptions 字典中的[]
    UILocalNotification *note  =launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
    if (note)
    {
//        NSLog(@"是从通知进来的");
//        NSLog(@"%@",note.userInfo);
    }
    else
    {
//        NSLog(@"直接点击icon进来的");
    }
    return YES;

}
// 注册通知
- (void)registerUserNotification
{
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_8_0
    // iOS8注册通知
    UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
#else
#endif
}

// 程序进入前台的时候调用的方法
- (void)applicationDidBecomeActive:(UIApplication *)application {
    // 改变appicon右上角的角标 具体后面再定 是直接设为0还是-1; 并且这句话的位置也得做相应的更改.
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}

// 从推送 进入程序
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    // self.window.rootViewController.view
    // 据说可以拿到VC 如果能拿到,客官就可以为所欲为了@^.^@
}

如果有什么不对的,请大神们及时纠正.并且请大爷赏个 💗 吧muamua~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,444评论 4 365
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,867评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 110,157评论 0 248
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,312评论 0 214
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,673评论 3 289
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,802评论 1 223
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,010评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,743评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,470评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,696评论 2 250
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,187评论 1 262
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,538评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,188评论 3 240
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,127评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,902评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,889评论 2 283
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,741评论 2 274

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,582评论 25 707
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,353评论 0 15
  • 极光推送: 1.JPush当前版本是1.8.2,其SDK的开发除了正常的功能完善和扩展外也紧随苹果官方的步伐,SD...
    Isspace阅读 6,600评论 10 16
  • 想爱一个人总是那么难,我们或许真的是过了那个为爱奋不顾身的年纪。朋友C小姐说:曾经我喜欢一个人,我就想告诉全世界。...
    rebacaa阅读 455评论 0 1
  • 高个子名为郭勇,是王雁的二弟子,为人耿直率性,平时最得王雁的宠爱。如今王雁被害,最为伤心的就是他了,他决心定要找出...
    语旅阅读 408评论 0 2