用户操作App至任意界面,然后按home键切到后台,然后再从后台返回前台后,如何将App显示到指定界面?

对于这个需求,具体来说分2种情况:

  1. 指定界面是一种盖在整个App上的效果。例如:

    • 有道云笔记的密码保护功能。在启动密码保护后,每次从后台切到前台,应用会先显示密码输入界面,然后才能显示上次退出前的界面。
    • 支付宝客户端的手势解锁功能,每次从后台切到前台,需要输入手势解锁才能显示退出前的界面。

对于这个需求,我在有道云笔记开发这个功能时,是放了一个密码输入的subview在整个界面(UIWindow)的最下面,然后每次切到后台时,用 bringSubviewToFront 方法将这个界面提到最前面。后来我发现,这种做法其实不太通用,因为iPad会有多个UIWindow实例,所以该方法在iPad版上不太好做。所以更好的办法是用一个层级更高的UIWindow盖在上面。具体做法是实现一个UIWindow的子类,并将其
windowLevel成员变量设置成UIWindowLevelAlert。

  1. 指定界面是App的一个正常的界面。例如某个应用有4个Tab,需要用户从后台切回来时,不管在什么情况下都切换到显示第1个Tab的内容。

对于这个需求,可能在退出前,用户在其它tab界面又点了一些操作,push或modal到另外一些界面上,要把整个操作回退回来比较麻烦。

对此,腾讯的王飞提供了一个比较trick的办法,我没有试过,先写下来,感兴趣的可以一试。王飞的办法是:直接把appDelegate里面的 window 的 rootViewController 置 nil,让它自己去清理。有点需要注意的是,rootViewController 置空,并不会导致已经入栈的vc立即被释放,因为屏幕还在显示它呢,只有下次设置 rootVC 并 make Visiable 的时候,之前 VC 的 dealloc 才会执行。

今日消息

如果你有向大量用户push消息的需求,推荐使用亚马逊的云服务。有同行告诉我,因为服务器都在美国,使用亚马逊的云服务向苹果的APNS发送消息非常快,大概的速度是每秒可以push一万条消息。

【转】如何使App从后台返回前台时,显示指定界面的更多相关文章

  1. iOS App 获取从后台返回前台时的页面

    产品美美的给小伙伴提了一个需求,当程序从后台进入前台时,如果是指定的页面,则弹出提示框. 大家首先想到的方法就是通过 AppDelegate.h 进行控制,相对复杂的步骤就是 在程序进入后台时对当前页 ...

  2. iOS----------检测app进入后台或前台

    开发播放器的时候,经常需要检测app进入后台(暂停播放)或者进入前台(开始播放).方法非常简单. 1.检测app进入后台 // 在AppDelete实现该方法 - (void)applicationD ...

  3. django JsonResponse返回中文时显示unicode编码(\u67e5\u8be2)

    django JsonResponse返回中文时显示unicode编码(\u67e5\u8be2) 关注公众号"轻松学编程"了解更多. 原因 这个unicode编码,是python ...

  4. iOS如何检测app从后台调回前台

    当按Home键,将应用放在后台之后,然后再次调用回来的时候,回出发AppDelegate里面的一个方法,-(void)applicationWillEnterForeground. 当应用再次回到后台 ...

  5. iOS 应用中有页面加载gif动画,从后台进入前台时就消失了

    解决办法: 在Appdelegate.m 里面有一个从后台进入前台所响应的方法,可以在该方法里post 一个通知,在加载动画里的页面接受通知,响应一定的方法即可 #pragma -mark 当程序进入 ...

  6. 知识点---js监听手机返回键,回到指定界面

    方法一. $(function(){ pushHistory(); window.addEventListener(“popstate”, function(e) { window.location ...

  7. iOS保持App真后台运行

    https://www.jianshu.com/p/d466f2da0d33 在我看来,苹果系统与安卓系统最直观的区别就是后台处理方式了吧,安卓手机一旦开启了很多app放到后台,即使前台什么也不做,就 ...

  8. 用ajax传递json,返回前台的中文乱码问题

    java项目中用ajax传递json,返回前台时中文出现问号(乱码问题)的解决办法 首先看一下没有解决前的状态: 我用的框架是ssm,在springMVC中我配置了编码格式为utf-8,每个jsp页面 ...

  9. iOS蓝牙APP常驻后台

    iOS蓝牙类APP常驻后台的实现方法,经过在苹果开发者论坛询问,以及查看苹果开发者文档,最后得出正确的方法为: 1.设置plist,蓝牙权限 2.到target-capabilities-backgr ...

随机推荐

  1. socket编程

    一.socket地址的数据类型及相关函数 socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4.IPv6.UNIX Domain Socket.然而各种网络协议的地址格式并 ...

  2. js的作业题

    <script type="text/javascript"> //var a=3; //switch(a) // { // case 1: // alert(&quo ...

  3. 窥探Swift系列博客说明及其Swift版本间更新

    Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...

  4. PHP中有关正则表达式的函数集锦

    之前学正则表达式的目的是想从网上抓取点小说啊,文档啊,还有获取相应的视频连接然后批量下载.当时初学PHP根本不知道PHP有专门抓包的工具,就像Simple_html_dom.php(在我的其他博文中有 ...

  5. Difference Between HashMap and IdentityHashMap--转

    原文地址:https://dzone.com/articles/difference-between-hashmap-and Most of the time I use HashMap whenev ...

  6. Java ConcurrentHashMap Example and Iterator--转

    原文地址:http://www.journaldev.com/122/java-concurrenthashmap-example-iterator#comment-27448 Today we wi ...

  7. grape动态PHP结构(一)——目录结构与配置文件

    一.结构介绍 结构的名字grape,中文名叫葡萄,因为最近一个同事经常带葡萄到公司给我们吃,受到启发想到了这个名字. 1)本结构需要在PHP5.5中运行,如果要在5.4中运行,有些地方就要做些修改 2 ...

  8. flex布局示例

    来自:授权地址 作者:水牛01248 几个横排元素在竖直方向上居中 display: flex; flex-direction: row;//横向排列 align-items: center;//垂直 ...

  9. 【JUC】JDK1.8源码分析之CyclicBarrier(四)

    一.前言 有了前面分析的基础,现在,接着分析CyclicBarrier源码,CyclicBarrier类在进行多线程编程时使用很多,比如,你希望创建一组任务,它们并行执行工作,然后在进行下一个步骤之前 ...

  10. JavaScript 中的相等检测

    一.有时JavaScript的等价比较是一件抓狂的事情,看看这个表格就一目了然了.