美文网首页
IOS 下载页遭遇锁屏紧急处理方案

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

作者: 飛天江郎 | 来源:发表于2016-08-29 10:21 被阅读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键事件。
    禁用案例

    相关文章

      网友评论

          本文标题:IOS 下载页遭遇锁屏紧急处理方案

          本文链接:https://www.haomeiwen.com/subject/iwyxettx.html