iOS之点击通知栏的通知进入程序的触发事件

点击通知栏的通知进入程序时,会触发App Delegate里的方法,分为以下两种情况:

1、程序未启动(即底部任务栏里没有进程)时:

此种情况下,点击通知栏的通知进入程序,会触发以下方法

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

对于launchOptions参数,需要经过以下处理:

NSDictionary* pushNotificationKey = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 

其中的pushNotificationKey才是从服务端推送过来的数据,使用键值对方式就可以读取服务器传递过来的额外参数了。

应用还没有加载,这时如果点击通知的显示按钮,会调用didFinishLaunchingWithOptions,不会调用didReceiveRemoteNotification方法。如果点击通知的关闭按钮,再点击应用,只会调用didFinishLaunchingWithOptions方法。

2、程序已启动:

如果程序已经启动,并驻留在内存中,不管程序是在前台(Foreground)还是在后台(Background),如果点击通知栏的通知进入程序将触发以下方法:

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

其中的userInfo参数,就已经是服务端推送过来的数据,也是采用键值对方式进行读取。

如果点击关闭再点击应用,则上面两个方法都不会被调用这时,只能在applicationWillEnterForeground或者applicationDidBecomeActive,根据发过来通知中的badge进行判断是否有通知,然后发请求获取数据

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • 在页面上点击任一链接时触发一个事件的代码

    这排准备写个自动更新和自动采集程序,要自动,只能在人多访问的地方放一个触发事件,因为自己的服务器是win主机,这和404触发是一样的,404怕搜索误认为做弊,所以不太敢用,唉,真是什么事都能完美 复制代码 代码如下: <script language=javascript>  document.onclick = function(e)  {  var o = window.event.srcElement;  if (o.tagName=="A")  {  alert(&

  • JS检测页面中哪个HTML标签触发点击事件的方法

    本文实例讲述了JS检测页面中哪个HTML标签触发点击事件的方法.分享给大家供大家参考,具体如下: 在html标签中,为了页面显示的美观,会在标签中相互嵌套,在做"效果"的时候就难免不了的添加各种事件,例如: <a href=""><span onclick="">dddd</span></a> 当用户点击的时候,想确定是链接产生的事件还是span标签onclick标签产生的事件,这个有时候是很有必要

  • jquery实现点击label的同时触发文本框点击事件的方法

    本文实例讲述了jquery实现点击label的同时触发文本框点击事件的方法.分享给大家供大家参考.具体实现方法如下: var labelID; $('label').click(function() { labelID = $(this).attr('for'); $('#'+labelID).trigger('click'); }); 希望本文所述对大家的jQuery程序设计有所帮助.

  • 点击A元素触发B元素的事件在IE8下会识别成A元素

    var menuUrl = $(eventSrc).attr("navUrl"); // if (menuUrl == undefined) {//兼容IE8的$(eventSrc)识别错误,取第一个 // menuUrl = $("#left_menu-small li:first a").attr("navUrl"); // } var browser = GetIEVersion(); if (browser == "IE8&qu

  • jquery 触发a链接点击事件解决方案

    jquery 触发a链接点击事件 复制代码 代码如下: <p class="btnSubmit"><a href="javascript:submitData();">确认</a></p> $(".btnSubmit a")[0].click(); <p id="tob"><a href="1.html">这是文字</a>&

  • jquery mobile的触控点击事件会多次触发问题的解决方法

    jquery mobile 对手势触控提供了如下几个事件监听: 复制代码 代码如下: tap  当用户点屏幕时触发taphold 当用户点屏幕且保持触摸超过1秒时触发swipe 当页面被垂直或者水平拖动时触发.这个事件有其相关联的属性,分别为scrollSupressionThreshold, durationThreshold, horizontalDistanceThreshold, and verticalDistanceThresholdswipeleft 当页面被拖动到左边方向时触发s

  • ASP.NET中RadioButtonList绑定后台数据后触发点击事件

    本文实例为大家分享了RadioButtonList绑定后台数据,触发点击事件的方法 首先前台页面放置一个RadioButtonList 控件 <asp:RadioButtonList runat="server" ID="RadioButtonList1" BorderStyle="None" RepeatColumns="3" CssClass="" RepeatLayout="Flow&

  • iScroll中事件点击触发两次解决方案

    之前也看了很多朋友的文章里有讲这个问题.比如使用一个变量记录执行的间隔时间什么的.感觉每次都要去撸一下,比较累人.本人喜欢搬砖前先选工具.其实解决这个方法很简单.iScroll呢其实是截获了点击浏览器时的touchstart和touchend事件.在touchend的时候使用js去触发元素的onclick事件(_end这个函数).而在实际操作中,先执行了touchend,然后再执行了一次onclick的相关函数.这样就形成了头疼的一次点击两次触发.这本来就一个不是问题的问题.之所以说这是个问题,

  • 回车直接实现点击某按钮的效果即触发单击事件

    复制代码 代码如下: //回车触发某按钮的单击事件 <input name="" type="text" class="input_search fl" id="searchkey" onkeydown="globelQuery(event);"/> <div class="search_but fr" onclick="searchByKey()"

  • iOS之点击通知栏的通知进入程序的触发事件

    点击通知栏的通知进入程序时,会触发App Delegate里的方法,分为以下两种情况: 1.程序未启动(即底部任务栏里没有进程)时: 此种情况下,点击通知栏的通知进入程序,会触发以下方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 对于launchOptions参数,需要经过以下处理: NSDictionary* pushN

  • 关于Android中点击通知栏的通知启动Activity问题解决

    前言 最近遇到一个很奇葩的问题,终于解决了,所以想着记录一下,方便大家或者自己以后有需要的时候可以参考学习. 问题场景 用小米手机使用小米推送一条消息,然后点击通知栏中的消息启动应用,然后进入会话的Activity.应用启动后,如果当前界面不是会话界面,那么新消息会在通知栏显示消息提醒,然后点击会话消息后却进不了会话的Activity,即点击了通知栏通知后,系统都没有启动指定Activity的意思,没有看到系统启动Activity的Log,到是会看到系统处理这个Activity的影子. 这个指定

  • iOS UIButton 点击无响应的解决办法

    前言 在日常开发中我们经常和按钮打交道,但是有时候会碰到比较难处理的问题,就是按钮不响应点击事件,这时候我们需要从下面几方面排查 按钮不响应的原因 1.按钮添加到了一个没有开启用户交互的父View上,例如UIImageView,这时候开启父试图的交互 view.userInteractionEnabled = YES 设为YES就可以解决问题 2.按钮自身被遮挡,点击的时候根本就没有点击到button,而是他上面一层View,自然就不会响应 这里有个看图层的方法,下图点击那个红框的按钮就可以看到

  • iOS微信浏览器回退不刷新实例(监听浏览器回退事件)

    iOS在微信浏览器回退是不重新加载页面的,有些时候是需要重新加载的,所以需要监听回退事件 $(function(){ pushHistory(); }); function pushHistory(){ window.addEventListener("popstate", function(e){ alert("回退!"); //window.history.back(); //在历史记录中后退,这就像用户点击浏览器的后退按钮一样. //window.histor

  • Python的Tkinter点击按钮触发事件的例子

    如果要开发一个比较大的程序,那么应该先把代码封装起来,在面向对象编程中,就是封装成类 先看代码: import tkinter as tk class App: def __init__(self, root): root.title("打招呼测试") frame = tk.Frame(root) frame.pack() self.hi_there = tk.Button(frame, text="打招呼", fg="blue", comman

  • 解决layer.confirm快速点击会重复触发事件的问题

    layer.confirm快速点击会重复触发事件问题 1 .问题描述: 快速点击会出现,重复触发事件,像后台发起多次请求,此时后台极端=短时间内多次请求,会出现并发问题,数据脏读 2.问题分析 :查看layerUI的API发现,系统的confirm是线程阻塞的,而layer.confirm是非阻塞的 3.问题解决 方案1. 防止重复触发事件,前台js加锁 方案2.后台代码加乐观锁 此时,方案1解决这个问题最佳 4.具体实现: //出库 output: function () { console.

  • javascript/jquery实现点击触发事件的方法分析

    本文实例讲述了javascript/jquery实现点击触发事件的方法.分享给大家供大家参考,具体如下: 点击事件 原声态 和 jquery <%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8" import="Tool.Tool" isELIgnored="false" %> &l

  • vue+elementui实现点击table中的单元格触发事件--弹框

    elementui中提供了点击行处理事件 查看位置: elementui的table事件 elementui的table中怎样点击某个单元格触发事件? 可以先看一下官网中table的自定义列模板代码 <template> <el-table :data="tableData" border style="width: 100%"> <el-table-column label="日期" width="180

  • layui中的tab控件点击切换触发事件

    目录 tab控件点击切换触发事件 方法一 方法二 layui选项卡无法切换 解决 tab控件点击切换触发事件 在layui中使用到tab控件,如果不想在页面加载时就加载所有tab的界面,而是点击某个tab再加载对应的数据,可以使用tab 的点击事件. 方法一 这个方法是我最初在网上找的使用方法. 非IE浏览器 //切换tab 调用不同的方法 layui.use('element', function(){ var $ = jQuery = layui.jquery; var element =

  • iOS判断用户是否打开APP通知开关

    一.前言 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同. 二.代码如下 @interface AppDelegate () @end @implementation AppDelegat

随机推荐