10本地推送通知 ios_ios本地推送通知 - CSDN
精华内容
参与话题
  • #pragma mark iOS 10 前台收到通知(远程推送本地通知) - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification ...

    #pragma mark iOS 10 前台收到通知(远程推送本地通知)

    - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {

        NSDictionary * userInfo = notification.request.content.userInfo;

        if([notification.request.triggerisKindOfClass:[UNPushNotificationTriggerclass]]) {

            /// iOS10处理远程推送

            [JPUSHServicehandleRemoteNotification:userInfo];

            pushDic = userInfo;

            /// 应用处于前台收到推送的时候转成本地通知 ===========================

            UILocalNotification *notification = [[UILocalNotificationalloc] init];

            notification.alertTitle =@"哈哈哈哈哈";

            notification.alertBody =@"aaaaaa";

            notification.userInfo = userInfo;

            [[UIApplicationsharedApplication] presentLocalNotificationNow:notification];

        }else{

            /// 应用处于前台收到本地通知不会出现在通知中心 借用极光推送的方法将本地通知添加到通知栏 ==============================

            completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);

        }

        // 需要执行这个方法,选择是否提醒用户,有BadgeSoundAlert三种类型可以选择设置

    }

    /// 程序运行于前台,后台 或杀死 点击推送通知 都会走这个方法

     - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {

        // Required

        NSDictionary * userInfo = response.notification.request.content.userInfo;

        if([response.notification.request.triggerisKindOfClass:[UNPushNotificationTriggerclass]]) {

            [JPUSHServicehandleRemoteNotification:userInfo];

    /// 杀死,后台点击通知栏 处理远程推送的跳转

            [selfreciveNotification:userInfo];

        }else{

             /// 前台运行时 转的本地通知 直接通知栏弹窗进行跳转处理

            [selfreciveNotification:userInfo];

        }

        completionHandler();  // 系统要求执行这个方法

    }



    展开全文
  • iOS应用在前台时弹出本地通知

    千次阅读 2017-09-21 09:09:56
    iOS应用在前台时弹出本地通知在appdelegate中实现如下方法//iOS10新增:处理前台收到通知的代理方法 -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *...

    在appdelegate中实现如下方法

    //iOS10新增:处理前台收到通知的代理方法
    -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
        NSDictionary * userInfo = notification.request.content.userInfo;
        if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {//应用处于前台时的远程推送接受
    
        } else {//应用处于前台时的本地推送接受
            completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);//
        }
    }
    展开全文
  • IOS推送声音设置

    万次阅读 2016-04-19 11:11:56
    关于推送,官方文档、各种第三方推送文档都很全,就跳过了。 由于自定义通知声音还是由 iOS 系统来播放的,所以对音频数据格式有限制,可以是如下: 对应音频文件格式是 aiff,wav,caf 文件,文件也必须放到 ...

    项目中遇到需要自定义通知声音的需求,以前没做过,就查了下官方文档,就像文档上说的,实现起来确实挺简单,就整理下当做备忘吧。

    关于推送,官方文档、各种第三方推送文档都很全,就跳过了。

    由于自定义通知声音还是由 iOS 系统来播放的,所以对音频数据格式有限制,可以是如下:

    对应音频文件格式是 aiffwavcaf 文件,文件也必须放到 app 的目录中。

    自定义通知声音的播放时间必须在 30s 内,如果超过这个限制,则将用系统默认通知声音替代。

    可以使用 afconvert 工具来处理音频文件格式,在终端中敲入如下命令就可以将一个 mp3 文件转换成 caf 文件:

    afconvert unbelievable.mp3 unbelievable.caf -d ima4 -f caff -v
    转换完成后就可以将 unbelievable.caf 这个文件拖入 Xcode 工程中,编译运行项目在真机上。

    可以通过iTunes 把MP3格式转换成WAV格式。


    本地推送 和 远程推送对自定义声音的处理是一样的,主要是:

    noti.soundName =UILocalNotificationDefaultSoundName;// 系统默认

    noti.soundName = @"unbelievable.caf";// 自定义声音名称


    本地推送:

    /**
         *  触发时间
         */
        // 设置 10秒之后
        NSDate *date = [NSDate dateWithTimeIntervalSinceNow:10];
        
    //    // 设置指定时间
    //    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    //    [formatter setDateFormat:@"HH:mm"];
    //    NSDate *now = [formatter dateFromString:@"13:42"];// 触发通知时间
      
          // 一个本地推送
        UILocalNotification *noti = [[UILocalNotification alloc] init];
        if (noti) {
            //设置推送时间
            noti.fireDate = date;
            
            //设置时区
            noti.timeZone = [NSTimeZone defaultTimeZone];
            
            // 设置重复间隔
            noti.repeatInterval = NSWeekCalendarUnit;
            
            // 推送声音
            noti.soundName = @"unbelievable.caf";//UILocalNotificationDefaultSoundName;
            
            // 内容
            noti.alertBody = @"推送内容";
            
            // 显示在icon 上的红色圈中的数字
            noti.applicationIconBadgeNumber = 1;
            
            // 设置info方便在之后 需要撤销的时候使用
            NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];
            noti.userInfo = infoDic;
            
            // 添加推送到UIApplication
            [[UIApplication sharedApplication] scheduleLocalNotification:noti];
        }

    远程推送 

    服务器返回的数据如下:

    userInfo默认包含以下内容:
                 aps =     {
                 alert = "推送信息";//推送显示的问题信息在这里
                 badge = 1;//app的icon右上角的推送数字 在这里设置
                 sound = "XXX.caf";//可以为空,为空就是默认的声音
                 };


    sound 对应的 value 赋值到 noti.soundName 上面就行了 




    同学遇到的问题:

    问题1:我已经在通知里面设定了自定义声音为啥还是默认声音那?

       noti.soundName = @"unbelievable.caf";// 自定义声音名称 

    解答:1、声音太长超过30秒,

         2、看看你要设置的音频有没有加到项目中,你可以到Build Phases/Copy Bundle Resources 看看。







    展开全文
  • iOS推送与角标总结

    万次阅读 2016-06-13 16:12:31
    近期发现一个蛋疼的问题,ios里清程序角标的时候会把通知栏的推送消息也清了。... 推送分为远程推送和本地推送。分开来记录。  在远程推送的协议中,有一个badge字段,这个字段是用来设置程序角标值

    转载:http://blog.csdn.net/duziteng124/article/details/50538838


    近期发现一个蛋疼的问题,ios里清程序角标的时候会把通知栏的推送消息也清了。试验了好久得到了一些结论,记录下结果。

          推送分为远程推送和本地推送。分开来记录。


          在远程推送的协议中,有一个badge字段,这个字段是用来设置程序角标值的。当app处于非运行状态或者在后台时,收到远程推送,app并不会运行任何代码,一切事务都是由系统处理(iOS 7推出的静默推送是特例)。此时收到推送,系统会根据推送消息的aps里的内容执行操作,包括:"sound"-提示音、"alert"-通知栏显示的推送内容、"badge"-程序角标值、"content-available"-静默推送标志。sound、alert和content-available就不提了,单说badge。分为下面几种情况。

          1.收到推送前程序角标为零,收到的推送消息badge为0。此时角标一直处于为零的状态(为零时不显示角标)。

          2.收到推送前程序角标为零,收到的推送消息badge大于0。此时角标从不显示变为badge的值。

          3.收到推送前程序角标不为零,收到的推送消息badge为0。此时角标从显示变为不显示,且清空所有通知栏的消息,包括新收到的推送消息(此处测试的情况是,当收到推送前角标不为0,收到的推送消息badge为0或小于0时,角标保持不变)

          4.收到推送前程序角标不为零,收到的推送消息badge大于0。此时角标值更新。


          本地推送通过UILocalNotification对象发送,UILocalNotification有一个applicationIconBadgeNumber属性,作用与远程推送的badge字段类似,针对上而的四种情况,结果与远程推送相同。但需要注意一点:当applicationIconBadgeNumber设为零(也是默认值)时,意味着不改变程序角标,而不是将程序角标置零。当applicationIconBadgeNumber < 0时,程序角标变为不显示,通知栏通知不清零顺带说一下UILocalNotification的cancelLocalNotification:和cancelAllLocalNotification方法,这两个方法是清除那些在日程表中尚未推送的本地推送消息,而不是清除通知栏内的推送消息。通知栏内的消息完全由系统控制,程序无法获得。只有当用户点击了通知栏的消息,系统调起app的didReceiveRemoteNotification或者didReceiveLocalNotification方法会将点击的推送内容传递给这两个方法,app才能获得这些数据。


          另外,UIApplication也有一个applicationIconBadgeNumber的属性,该属性就是代指程序角标的。可以在代码中直接更改该属性的值,其效果与远程推送的四种情况类似。强调一点,当程序角标为非零时,将UIApplication的applicationIconBadgeNumber属性设为零,会清空通知栏


          综合上面的结论,一旦将程序的角标从非零置为零,就会清空通知栏的所有通知。如果想清除角标但不清空通知栏,有如下方法。

          1.发送一条远程推送,推送内容只有badge,并将badge的值设为负数。此时程序角标会消失但是通知栏的推送消息不清除(此处有待确定)。

          2.同样的方法,发送一条本地推送。

          注:不能通过直接将UIApplication的applicationIconBadgeNumber设为负数的方法解决问题,实验证明,这种做法一样会清空通知栏。





    展开全文
  • 1.首先我们初始化一个 UISwith self.swith = [[UISwitch alloc] initWithFrame:CGRectMake(80, 80, 160, 30)]; [_swith addTarget:self action:@selector(doLocalNotifition) forControlEvents:...
  • iOS本地推送(本地通知

    万次阅读 热门讨论 2015-03-16 11:06:54
    iOS8之后,以前的本地推送写法可能会出错,接收不到推送的信息, 如果出现以下信息: 1 Attempting to schedule a local notification 2 with an alert but haven't received permission from the user to ...
  • Unity3D游戏中Android和iOS本地推送通知

    万次阅读 2016-03-07 14:16:17
    转自: http://taoyuannote.com/2016/02/18/blog/Unity3D%E6%B8%B8%E6%88%8F%E4%B8%ADAndroid%E5%92%8CiOS%E6%9C%AC%E5%9C%B0%E6%8E%A8%E9%80%81%E9%80%9A%E7%9F%A5/ android plugiin下载 ...在Un
  • iOS 判断App是通过点击推送打开的

    千次阅读 2017-01-23 17:27:55
    iOS 程序启动时总会调用application:didFinishLaunchingWithOptions:,其中第二个参数launchOptions为NSDictionary类型的对象,里面存储有此程序启动的原因。 若用户直接启动,lauchOptions内无数据; 若由其他...
  • iOS开发之极光推送自定义推送声音

    万次阅读 热门讨论 2016-06-01 10:17:18
    项目中用到了自定义推送声音,于是就看了下官方文档。 官方文档上说: Preparing Custom Alert Sounds For remote notifications in iOS, you can specify a custom sound that iOS plays when it presents ...
  • 以下文字转载自:http://www.itdadao.com/articles/c15a380661p0.html一、2017-10-12号更新: iOS 11 此功能依然好用!!!直接对applicationIconBadgeNumber赋值为-1就行了。这行代码仅仅对iOS 11生效。...
  • iOS10推送必看UNNotificationContentExtensioniOS10里的通知推送iOS开发系列–通知与消息机制——————以上是本文参考链接,以下是正文—————————iOS的本地通知和远程通知的区别 在同时开启多个移动...
  • 面试官:“本地推送,在杀掉进程以后还可以收到吗?” 我(非常肯定的):“可以的” 面试官:“并不能,不信你回去写个demo吧” 我:“我写过本地推送,确实是可以的啊” 面试官:“如果杀掉进程后,还能收到本地...
  • iOS7,iOS8下如何判断用户是否开启推送
  • iOS推送角标与通知栏变化总结

    千次阅读 2016-06-13 16:13:26
    1.本地推送UILocalNotification的applicationIconBadgeNumber属性只会影响角标的显示,不会影响通知栏的通知处理。  1)当applicationIconBadgeNumber>0时,角标会随applicationIconBadgeNumber而变化。  2)当...
  • 本地通知和推送通知编程指南(2)

    千次阅读 2011-09-20 10:48:26
    本地通知和推送通知的基本目的是让应用程序能够通知其用户某些事情——例如一个消息或者约会即将到达——同时,应用程序不需要在前台运行。二者的不同在于:本地通知由由应用程序计划,并同一设备上的iOS发出 ;推送...
  • 最近遇到的问题,仅仅贴出来我的...选择iOS App Development然后一步步生成一个,下载到本地,双击安装。 然后,手动的在build Setttings中,修改code sign(因为我的电脑中有三个App Store账号的证书,所以手动靠谱些
  • 本地通知和推送通知编程指南(1)

    千次阅读 2011-09-01 15:28:14
    关于本地通知和推送通知是两种通知应用程序的方法(通知时不需要程序在后台运行)。通知可能是一条消息,一个将要发生的日历事件,或者来自远程服务器的数据。当操作系统收到通知时,本地通知和推送通知看起来(听...
  • ios APP前台时显示消息通知

    千次阅读 2019-01-18 14:00:07
    最近整理了项目使用的推送资料,包括原生APNS、亚马逊推送、谷歌FireBase推送,从申请证书到代码工具调试,基本整理的差不多。  本篇文章主要介绍app在前台活跃时,有推送时显示系统的原始通知框。在网上查了很多...
  • iOS 本地推送以及自定义推送声音

    千次阅读 2017-10-19 17:47:01
    iOS10.0以后苹果要求本地推送使用UserNotification框架来做本地推送, 下文就该框架下做推送以及自定义推送声音做下介绍: 1.AppDelegate.m:导入框架并遵循协议:#import <UserNotifications/UserNotifications.h>@...
  • ——本地推送通知推送通知的作用?在App退到后台或者完全退出时,可以使用通知来告诉用户某件事情,比如推送新的聊天消息、新闻等通知对应的效果: 在主屏幕的顶端会出现通知消息 当手机锁屏时出现在锁屏界面,可以...
1 2 3 4 5 ... 20
收藏数 11,054
精华内容 4,421
关键字:

10本地推送通知 ios