IOS 下载页遭遇锁屏紧急处理方案

在开发中会遇到零零碎碎的一些小问题,诸如物联网开发中最常见的通过别的通讯协议来进行下载的方式。诸如此类会让我们无法直接方便的使用苹果的API来解决这类问题。

本次描述的是如何在一般Socket协议下载中遭遇锁屏时的处理方案

在下载类添加所需接收的通知

#import <notify.h>

#define NotificationLock CFSTR("com.apple.springboard.lockcomplete")
 CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL,
                                        screenLockStateChanged, NotificationLock, NULL,
                                        CFNotificationSuspensionBehaviorDrop);

然后实现那个方法screenLockStateChanged

static void screenLockStateChanged(CFNotificationCenterRef center,
                                   void* observer,
                                   CFStringRef name,
                                   const void* object,
                                   CFDictionaryRef userInfo)
{
    NSString* lockstate = (__bridge NSString*)name;
    if ([lockstate isEqualToString:(__bridge  NSString*)NotificationLock]) {
        NSLog(@"locked.");
      /*
       * 这里需要处理诸如Socket断开、通知用户等问题 
       */
    } else {
        NSLog(@"lock state changed.");
    }
}

简单实用


这里要更正一下,这个方法在苹果新出的审核规则里,已经被拒绝了,所以开发者们可以通过appleDelegate中的applicationWillResignActive方法配合NSNotificationCenter来检测锁屏问题以及HOME键事件。
禁用案例

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,252评论 4 61
  • 作者:何强 江心,丟失了壹只鞋 不敢委身壹江的漩渦去吟“漩渦裏的歌” 只好將另壹只脫下 赤腳走上江灘的泥濘 決心拋...
    E_天邊的凝紅阅读 247评论 0 2
  • 我要做有钱耍手段的人
    嘟嘟狐阅读 129评论 0 0
  • 题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。
    NoFacePeace阅读 130评论 0 0
  • 每日一我 周六,本想去看波罗的海首饰展, 困得下午回去睡了回笼觉。睡睡平安。。。 每日一善 周末调整日,都安心睡觉...
    sophietyl阅读 116评论 0 0