防止更新ios11
2018-03-23 12:31:00 weixin_34268310 阅读数 18

最近项目中遇到了一个崩溃,当点击图片选择保存的时候,并没有出现请求相册权限的对话框,而是直接就崩溃,并且没有任何错误信息。开始以为是权限没有添加,但是 NSPhotoLibraryUsageDescription 是添加了的,搞不懂了。去翻了翻官方的文档,果然找到了解决方式。

从 iOS 11 开始,相册的权限参数发生了变化,适配 iOS 11 还需要添加一个 NSPhotoLibraryAddUsageDescription 的参数。官方的描述如下:

NSPhotoLibraryAddUsageDescription

NSPhotoLibraryAddUsageDescription ( String - iOS) This key lets you describe the reason your app seeks write-only access to the user’s photo library. When the system prompts the user to allow access, this string is displayed as part of the alert.

Important: To protect user privacy, an iOS app linked on or after iOS 10.0, and that accesses the user’s photo library, must statically declare the intent to do so. Include the NSPhotoLibraryAddUsageDescription key (in apps that link on or after iOS 11) or NSPhotoLibraryUsageDescription key in your app’s Info.plist file and provide a purpose string for the key. If your app attempts to access the user’s photo library without a corresponding purpose string, your app exits.

This key is supported in iOS 11.0 and later.

从 important 的最后一句话可以看出,当应用试图访问用户相册但是 Info.plist 中并没有对应权限的参数的话,应用就会退出。

原因找到,添加上新的参数。搞定!!!

关于 Info.plist 中的 key ,可以参考官方的文档:Cocoa Keys

相关权限申请:

struct PermissionsManager {
    
    /// 相册权限
    ///
    /// - Parameters:
    ///   - authorizedClosure: 已授权回调
    ///   - deniedClosure: 未授权回调
    static func albumPermissions(authorizedClosure: (() -> ())? = nil, deniedClosure: (() -> ())? = nil) {
        
        let status = PHPhotoLibrary.authorizationStatus()
        
        switch status {
        case .notDetermined:
            PHPhotoLibrary.requestAuthorization { _ in
                self.albumPermissions(authorizedClosure: authorizedClosure, deniedClosure: deniedClosure)
            }
        case .authorized:
            if let authorized = authorizedClosure {
                authorized()
            }
        default:
            if let denied = deniedClosure {
                denied()
            }
        }
    }
    
    
    /// 相机权限
    ///
    /// - Parameters:
    ///   - authorizedClosure: 已授权回调
    ///   - deniedClosure: 未授权回调
    static func cameraPermissions(authorizedClosure: (() -> ())? = nil, deniedClosure: (() -> ())? = nil) {
        
        let status = AVCaptureDevice.authorizationStatus(for: .video)
        
        switch status {
        case .notDetermined:
            AVCaptureDevice.requestAccess(for: .video) { _ in
                self.cameraPermissions(authorizedClosure: authorizedClosure, deniedClosure: deniedClosure)
            }
        case .authorized:
            if let authorized = authorizedClosure {
                authorized()
            }
        default:
            if let denied = deniedClosure {
                denied()
            }
        }
    }
}
2018-12-18 16:05:11 hong1595 阅读数 32

评价跳转一直是很多APP增添用户评价的快捷入口.在很多应用的设置,或者弹框中会出现给APP在Apple Store上进行评价,在网上找了很多个跳转的方法,发现以下可行:

说明:项目中的版本是iOS8.0 
itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id= 1195751596 
<备注> 
1195751596为你需要设置的你自己的APPID
因此,在项目中的可以进行以下操作

1.宏定义

#define APP_ID @""
// iOS 11 以下的评价跳转
#define APP_OPEN_EVALUATE [NSString stringWithFormat:@"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%@", APP_ID]
// iOS 11 的评价跳转
#define APP_OPEN_EVALUATE_AFTER_IOS11 [NSString stringWithFormat:@"itms-apps://itunes.apple.com/cn/app/id%@?mt=8&action=write-review", APP_ID]

2.调用跳转

在响应事件中,调用UIApplication的OpenURL的方法: 
因为评价的存在iOS 11的分水岭,这里采用宏编译的方式

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_11_0
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:APP_OPEN_EVALUATE_AFTER_IOS11]];
#else
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:APP_OPEN_EVALUATE]];
#endif

OK,搞定
 

2017-07-19 11:31:00 weixin_34365635 阅读数 8

跟随时代潮流,iOS11在今年6月6日发的苹果发布会上,面世了。

下面简述下iOS11的一些新特性。

作为头盘的是 iMessage 和 Apple Pay。iMessage 加入了云端同步删除功能,可以在 macOS 和 iOS 上同步删除某条消息。


Apple Pay 新增线上点对点转账支付,并且加入 Apple Pay Cash 现金账户直接对接银行卡账户,新的 Apple Pay 更像支付宝和微信支付了


黑暗模式,是相对于以前版本中的白色模式而言。

更强大的Siri。苹果通过智能学习技术,让 Siri 的语音语调变得更加自然、更接近真人语言节奏。beta 版的翻译功能现身,目前支持英文与中、法、德、意、西五国语言的语音翻译。

照片和相机也得到了升级。

苹果启用了新的 HEVC 视频格式,以及新的照片格式 HEIF,相比以往拥有更高的压缩率。

Live Photos现在可以自主挑选某一帧画面作为封面,并且加入了循环、退格、长曝三种自动处理方式。Live Photos 从之前单纯的记录拍摄前后影像,变为一种聪明的短视频创作工具,甚至还能模仿相机长曝拍摄流水等。


另外系统内置地图新增室内地图,提供超市和机场的室内布局,包括楼层信息等。只是目前支持的城市和机场还比较有限,有待后期的持续新增和扩展。



最后,iOS11还提出了很重要的一项---AR。现场发布了AR kit开发套件。

2017-09-28 09:56:00 weixin_34414650 阅读数 11

1.新增框架

  • ARKit
  • PDFKit
  • Core ML & Vision
  • DeviceCheck
  • FileProvider & FileProviderUI
  • Core NFC
    NFC(Near Field Communication)即近距离无线通讯技术。Core NFC 主要用于检测 NFC 标签, 并且读取其中包含的 NDEF 数据。
  • Drag & Drop

2. iPhone X 适配

iOS 11 设备上运行出现最多问题应该就是 tableView 莫名奇妙地偏移了 20pt 或者 64pt。原因是 iOS 11 弃用了 automaticallyAdjustsScrollViewInsets 属性,取而代之的是 UIScrollView 新增了 contentInsetAdjustmentBehavior 属性,这一切的罪魁祸首都是新引入的 Safe Area。

3.引用于:

App开发团队必须知道的 iOS 11 更新点
iOS11版本适配问题

2016-06-20 00:21:00 weixin_34112030 阅读数 73

iOS11不提示更新教程

最近因为苹果电池门事件,很多小伙伴都在想方设法的让自己的手机不更新。其实iOS不更新有非常简单的事情,就是给iOS 11设备添加一个描述文件即可。

1. 在 Safari 打开这个网页:iOS11屏蔽更新的描述文件,密码:44hp


1809648-c56a1335a7c536ea.jpg
Safari 打开描述文件

2. 点击允许,按下右上角的「安裝」,安装之后会提示你重新启动手机。。


1809648-3b8a7d4101d0d36d.jpg
安装提示



3. 在手机的应用屏幕上将会多一个 Feedback,扔在一个看不见的地方吧,至此iOS 11不提示更新就完成了。


1809648-eab7185c6ab1cf71.jpg
Feedback





iOS 设备降级教程

1、下载手机型号相对应的固件。下载固件地址

2、电脑连接手机,打开iTunes,备份手机。

3、关闭查找我的iPhone。“设置”->"iCloud"->“查找我的iPhone”。如果经常提示“与iCloud服务器连接超时”的话,还原手机的网络设置就可以了。

4、电脑连接手机,打开iTunes,按住shift键(Windows)[Mac系统按住option键],然后鼠标点击“恢复”,选择刚刚下载好的固件,然后就是等待既可以了。。。。。

没有更多推荐了,返回首页