2018-07-05 ios10本地推送

前一段时间了解到,ios10的本地推送能够基于位置,感觉这是个很酷炫的功能,潜在的场景:比如说走到公司附近,提示用户签到;走到地铁口,提示地铁站。本文就介绍下ios10的本地推送。

ios10之后的推送都集成在UserNotifications框架中了,使用前需要先导入这个框架。

创建本地推送的流程大概是这样的:

 1、创建推送内容,涉及到的类:UNMutableNotificationContent,还可以添加图片

 2、选定推送类型 分三种:指定时间、指定日期、指定地点

 3、创建推送请求,涉及到的类:UNNotificationRequest

 4、加入到消息中心

代码如下:

-(void)createTimerNoti{//指定时间的推送

    UNMutableNotificationContent*content=[[UNMutableNotificationContent alloc] init];

    content.title=@"到站提醒";

    content.subtitle=@"您有一条新的到站提醒";

    content.body=@"紫荆山站到了,请您注意换乘2号线";

    //添加图片附件

    NSURL*url=[[NSBundle mainBundle] URLForResource:@"piggy" withExtension:@"png"];

    UNNotificationAttachment*attch=[UNNotificationAttachment attachmentWithIdentifier:@"lzy" URL:url options:nil error:nil];

    content.attachments=@[attch];

    UNNotificationTrigger*trigger=[UNTimeIntervalNotificationTrigger triggerWithTimeInterval:3 repeats:NO];//第二个参数为是否重复 如果是,则间隔时间要大于60

    UNNotificationRequest*request=[UNNotificationRequest requestWithIdentifier:@"timerId" content:content trigger:trigger];

    [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError*error){

        if(!error){

            NSLog(@"指定时间的推送发送成功");

        }

    }];

}

从代码来看,创建本地推送要比之间简单的多。下面主要介绍一下如何创建指定地点的本地推送。

基于地理位置的本地推送,在进入或离开指定的区域内,就会触发推送。程序没有启动或者在后台也可以。

代码如下:

-(void)createLocationNoti{//创建指定区域的推送

    UNMutableNotificationContent*content=[[UNMutableNotificationContent alloc] init];

    content.title=@"地点提醒";

    content.subtitle=@"您即将进入地铁站附近";

    content.body=@"您即将进入地铁站附近";

    CLLocationCoordinate2D center=CLLocationCoordinate2DMake(32.690247, 110.688876);

    CLCircularRegion*region=[[CLCircularRegion alloc] initWithCenter:center radius:2000 identifier:@"zmt"];

    region.notifyOnEntry=YES;//进入区域

    region.notifyOnExit=NO;//离开区域

    UNLocationNotificationTrigger*trigger=[UNLocationNotificationTrigger triggerWithRegion:region repeats:NO];

    UNNotificationRequest*request=[UNNotificationRequest requestWithIdentifier:@"zmtRequest" content:content trigger:trigger];

    [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError*error){

        if(error) {

            NSLog(@"推送失败");

        }else{

            NSLog(@"指定地点的推送发送成功");

        }

    }];

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 介绍一下iOS10的通知新功能,用户体验的提升和开发者能够发挥的地方非常多,使得iOS更具有竞争力。 1.iOS ...
    F麦子阅读 4,167评论 3赞 4
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,173评论 19赞 139
  • 这两天在做推送相关的功能,发现iOS10以后推送的变化还是很大的。在这里记录下来,以供日后参考。 本文将以对比的形...
    断片记忆阅读 1,578评论 2赞 2
  • 许多集成的步骤个推官网都有了,这里只写关于推送的远程推送和本地通知的步骤和代码。APP在后台时:走苹果的APNS通...
    AllureJM阅读 3,005评论 1赞 9
  • 妞从小就想养狗,无奈侍候人都嫌累的我们,自然不愿去养狗。 寒假来奶奶家,大舅公家养了只叫西西的小黑狗,四个月大,妞...
    JC贾阅读 291评论 3赞 1

友情链接更多精彩内容