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

2016-08-29  本文已影响428人  飛天江郎

在开发中会遇到零零碎碎的一些小问题,诸如物联网开发中最常见的通过别的通讯协议来进行下载的方式。诸如此类会让我们无法直接方便的使用苹果的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键事件。
禁用案例

上一篇下一篇

猜你喜欢

热点阅读