文档章节

iOS推送通知“黄金宝典”

杭城小刘
 杭城小刘
发布于 2016/08/02 08:52
字数 431
阅读 24
收藏 0

1. App关闭时接收到他推送通知,通过点击推送通知来启动App

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

在程序启动完成后,在此方法中可以得到推送通知的类容,此处又分为远程通知和本地通知的区别。

远程通知

NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

本地通知

UILocalNotification *localNoti = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
NSDictionary * userInfo = localNoti.userInfo;

这里,为了让主界面先加载完成,一般需要延迟一小段时间后再去处理推送通知,push出相应的响应页面等。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                [self didReceiveNotification:userInfo];
            });

2.App正在运行时接收到推送通知

远程通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

本地通知

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

App状态

  UIApplicationStateActive, // 激活状态,用户正在使用App
    UIApplicationStateInactive, // 不激活状态,用户切换到其他App、按Home键回到桌面、拉下通知中心
    UIApplicationStateBackground // 在后台运行

根据application.applicationState的状态,判断执行哪种动作。

 

3、检测客户端是否打开了接收通知的功能

检测客户端是否打开了通知:
if (IOS8) { //iOS8以上包含iOS8
        UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings];

        if(UIUserNotificationTypeNone != setting.types) {
            NSLog(@"用户打开了通知");
        }else{
            [self showAlert];
        }
    }else{ // ios7 一下
        UIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
        if(UIRemoteNotificationTypeNone != type){
            NSLog(@"用户打开了通知");
        }else{
            [self showAlert];
        }
    }


//用户没打开接受通知功能给出提示
-(void)showAlert{
    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"“凤凰云健康”想给您发送推送通知" message:@"“通知”可能包括提醒、声音和图标标记。这些可在“设置”中配置。" preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];
    [alertController addAction:okAction];
    [self presentViewController:alertController animated:YES completion:nil];
}

 

© 著作权归作者所有

共有 人打赏支持
杭城小刘
粉丝 14
博文 109
码字总数 54955
作品 0
杭州
iOS工程师
私信 提问
《小印记》iOS源码分享--极光推送实践篇

笔者这几天刚完成《小印记》的推送功能,今天特分享一下在做的过程中实际解决的问题。如果读者学到了有用的东西,希望能前往App Store下载《小印记》支持一下笔者,谢谢! 《小印记》iOS源码...

_子墨
2017/03/21
0
2
软件架构杂谈(三) --- APNS

浅谈软件架构(三) —— APNS ----cnyinlinux 本文将讨论的是常见软件架构中的三角关系——APNS。 APNS是Apple Push Notification Service的简称,即苹果推送通知服务。它用在当前很火热的苹果...

cnyinlinux
2015/06/09
0
0
iOS 12 真的能让旧款 iPhone 速度飞起吗?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdnnews/article/details/82757910 去年 9 月,苹果在发布 iOS 11 时曾表示,这是先进移动操作系统 iOS 的又...

CSDN资讯
09/18
0
0
配置iOS推送通知与推送通知iOS客户端编写实现及推送服务器端编写

1)先配置iOS推送通知: 配置推送通知比较麻烦,需要iOS开发者帐号,然后配置一个Apple ID、配置概要文件和SSL证书。 1 证书签名请求 首先需要证书签名请求,这需要在Mac OS X系统中完成,通...

江山风雨
07/04
0
0
iOS开发系列--通知与消息机制

概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情。iOS中通知机制又叫消息机制,其包...

TomatosX
2015/03/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html

MrPei
4分钟前
0
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
6分钟前
0
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
6分钟前
0
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
10分钟前
1
0
webservice动态客户端自我记录备份(spring boot)

动态客户端相比直接调用webservice的客户端代码要简单很多,但实际上很多工作是java自己替我们做掉了。简单记录一下内容,以备后续使用: pom文件只需要引入: <!-- CXF webservice --><de...

checkboxMan
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部