远程推送(个推)

  大家所说的推送一般都是指远程推送。远程推送是指我们需要通过苹果的服务器向我们的应用程序发送消息,即使用户将应用程序关闭用户也会收到消息横幅。极光推送大家估计是大家都在使用的,今天我们主要来看一下个推推送。他们的流程其实是一样的,在此之前,还是先说一下整个远程推送的流程吧。

  1)首先作为应用程序,我们先要获取用户的授权,如果用户不允许,那么我们是无法进行推送的。在iOS8.0推出之后,苹果的授权做了一些调整,废话不多说,请看代码。

  if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {

        UIUserNotificationSettings *uns = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound) categories:nil];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
        [[UIApplication sharedApplication] registerUserNotificationSettings:uns];
    } else {
        UIRemoteNotificationType apn_type = (UIRemoteNotificationType)(UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge);
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:apn_type];
    }

  2)如果授权允许的话,那么我们会在AppDelegate的didRegisterForRemoteNotificationsWithDeviceToken代理方法中取得deceiveToken(但是要注意一点,即使取得授权,再网络状况不好的情况下也有可能拿不到deceiveToken)。deceiveToken是什么鬼?它是UDID和APPID 加密后的结果。苹果非常注重用户隐私,它认为UDID是用户的隐私,我们不能随意获取。但是再这里我们又必须要使用UDID,所以苹果就把UDID和APPID 加密后提供给我们。取得deceiveToken后,我们要将deceiveToken发送给个推服务器,以后由个推帮助我们完成和苹果服务器的交互。

[_gexinPusher registerDeviceToken:_deviceToken]; 

  3)在我们向用户发送推送消息的时候,用户的应用程序可能会有两种状态。1、它被杀死了 2、它还活着。如果应用程序还活着,仅仅是被放在了后台那么收到消息后它触发的是这个方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userinfo 

但是如果应用程序被杀死了,用户点击横幅进入的应用,那么它触发的是

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

所以我们需要在didFinishLaunchingWithOptions 方法中进行判断。

NSDictionary* message = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

    if (message) {

        NSString *payloadMsg = [message objectForKey:@"payload"];

        NSString *record = [NSString stringWithFormat:@"[APN]%@, %@", [NSDate date], payloadMsg];

        [_viewController logMsg:record];

    }

如果message 不为空,则说明是收到推送消息后,横幅启动,否则是点击图标进行启动的。

关于个推,它的demo 里写的比较清楚也比较简单,大家有兴趣的话可以看一下。如果demo看不懂的话可以留言交流一下,这里就不再赘述了。

时间: 2024-10-14 01:02:14

远程推送(个推)的相关文章

C# 数据推送 实时数据推送 轻量级消息订阅发布 多级消息推送 分布式推送

前言 本文将使用一个NuGet公开的组件技术来实现数据订阅推送功能,由服务器进行推送数据,客户端订阅指定的数据后,即可以接收服务器推送过来的数据,包含了自动重连功能,使用非常方便 nuget地址:https://www.nuget.org/packages/HslCommunication/            github地址:https://github.com/dathlin/HslCommunication                                 如果喜欢可以s

atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99

atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99 1.1. 云推送有推送次数或频率的限制吗? 1 1.2. 推送的消息长度 1 1.3. 离线消息的支持 2 1.4. 是否支持转义字符 2 2. 客户端身份识别机制 2 3. 绑定客户端的区别流程::jpush胜出 2 4. 文档风格比较::百度,jpush胜出 3 5. 编程sdk框架比较..个推,百度胜出 3 6. 编程风格的比较 3 6.1. 个推 3 6.2. 百度 4 6.3. J

第三方推送-个推使用

个推的使用在Android客户端相对来说使用比较简单,已经提供了sdk Demo,按照文档和Demo配置相关代码就可以.下图为推送的示意图 客户端需要区分通知和透传的使用,根据需求告诉服务端选择不同的模板 服务端注意的东西相对来说比较多: 个推每天的消息推送量数以亿计,统计分析日志时,经常可以从日志规律发现调用方的一些使用误区,今天提几点开发者在使用个推api时易出现的几个误区. 误区一 推送选错接口 个推服务端adk提供给开发者三个推送接口:pushMessageToSingle/ pushM

什么是推送,推送的原理是什么

网页推送,是指将经过整理的信息资源以网页的形式迅速转发至用户的界面,实现用户的多层次需求,使得用户能够自己设定所需要的信息频道,并直接在用户端接收定制信息的实现方式. 用很直接的话来说就是把最新的软件信息,资讯或者别人想让你看到的东西推荐给你,就像是腾讯新闻的最新热点弹窗一样的作用. 这里有移动开发市场上经常用的推送服务,推送服务,你也可以通过他们的特点和配置过程了解对比下,另外还有推送界的十大豪门推送. 推送方案的公认评价采取4s标准: 1.Safe(安全) 2. Stable(稳定) 3.S

什么是推送,推送的原理是什么?

网页推送,是指将经过整理的信息资源以网页的形式迅速转发至用户的界面,实现用户的多层次需求,使得用户能够自己设定所需要的信息频道,并直接在用户端接收定制信息的实现方式. 用很直接的话来说就是把最新的软件信息,资讯或者别人想让你看到的东西推荐给你,就像是腾讯新闻的最新热点弹窗一样的作用. 这里有移动开发市场上经常用的推送服务,推送服务,你也可以通过他们的特点和配置过程了解对比下,另外还有推送界的十大豪门推送. 推送方案的公认评价采取4s标准: 1.Safe(安全) 2. Stable(稳定) 3.S

Android实现点击通知栏后,先启动应用再打开目标Activity ,极光推送等推送的也可以参考一下(转)

我因为项目中集成了极光推送,推送的通知栏点开需要确定进入哪个界面就参考了这边文章,感谢作者的无私. 情况简述 在开发Android app的过程中,遇到这样一个需求:app中启动一个Service,该Service在独立进程中运行,与服务器保持长连接,将服务器推送过来的消息在通知栏中显示,并设置点击动作,点击后跳转到app中对应的Activity.目前遇到的问题是Service以独立进程运行,在收到消息并弹出通知后,app本身的进程有两种情况: app正在运行 app已退出 对于第一种情况,处理

java SDK服务端推送 --极光推送(JPush)

网址:https://blog.csdn.net/duyusean/article/details/86581475 消息推送在APP应用中越来越普遍,来记录一下项目中用到的一种推送方式,对于Andriod它并没有自己的原生推送机制,一种简单的推送方式是采用第三方推送服务的方式,即通过嵌入SDK使用第三方提供的推送服务,主流的有百度云推送,极光推送,友盟,个推.亚马逊等等.本篇博文只介绍采用极光推送的方式.        如果你是一个新手,建议你先看完本篇博客,然后在去看官网,这样也许上手会快一

SEO教程:快速增加360搜索引擎收录,360自动推送批量推送版

上次改编了一下百度的JS推送代码,实现了批量推送 传送门>>>百度链接提交-js代码推送批量推送版 这次我们来研究360js自动推送代码. <script> (function(){ var src = "https://jspassport.ssl.qhimg.com/11.0.1.js?d182b3f2654654f2db83acfaaf6e696dba"; document.write('<script src="' + src +

远程推送---本地推送

//本地通知,只有在程序处于非运行状态下,才会发送本地通知 //1.创建本地的通知对象 UILocalNotification *notification = [[UILocalNotification alloc] init]; //2.设置通知触发的时间 notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; //3.设置弹出的提示内容 notification.alertBody = @"消息来了,赶紧去看看吧&qu

远程(离线)推送自定义推送声音,友盟、极光

一.极光推送很容易可以看到自定义推送声音的设置,名字不对了可以尝试添加格式后缀,如"shegnyin.m4a" 二.友盟的推送:已开始还真没找到,,,后台用参数一试,擦 友盟声音只支持:PCM.m4a (IMA/ADPCM).?Law.aLaw必须是这4种格式之一,添加声音 必须是带后缀的"shengyin.m4a" 三.以友盟为例,执行相应事件 1.点击通知 处理事件 //iOS10以后接收的方法 -(void)userNotificationCenter:(UN