iOS10.3 正式版本发布,其中将文件系统改为APFS,在文件存储方面确实释放了不少空间,对于开发者10.3又有那些变动呢?
-
允许 App 内评分及留言
在 iOS 10.3 中,开发者可以利用新的 API 在 App 内通过弹窗的方式请求用户直接给出评分,不再需要前往 App Store。
苹果在最新的iOS 10.3的SDK中的StoreKit框架中新增了一个类SKStoreReviewController来专门做这件事情,它只有一个类方法requestReview
#import <StoreKit/StoreKit.h>
- (IBAction)makeReview:(id)sender {
[SKStoreReviewController requestReview];
}
Paste_Image.png
考虑到兼容问题,修改代码如下:
-(void)showReviewWithAppId:(NSString *)appId{
Class clazz = NSClassFromString(@"SKStoreReviewController");
if(clazz != nil){
//iOS10.3 应用内打开
[SKStoreReviewController requestReview];
}else{
//跳转到AppStore评论页面
NSString *str = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/app/id%@?action=write-review", appId];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];
}
}
-
开发者可以随时更新 App 的图标
iOS10.3修改APP图标主要Api为:
- (void)setAlternateIconName:(nullable NSString *)alternateIconName completionHandler:(nullable void (^)(NSError *_Nullable error))completionHandler
除了使用此方法外,还需要在Info.plist中添加配置,配置说明
Paste_Image.png实际步骤如下:
1、添加AppIcon,记录图片名字Bitmap(随意名字,记录下即可)
2、修改info.plist文件
Paste_Image.pnginfo.plist源文件如下:
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>BitmapNew</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>BitmapNew</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Bitmap</string>
</array>
</dict>
</dict>
说明:CFBundlePrimaryIcon
中的Bitmap
即为之前记录的图片名称,BitmapNew 是我的用于替换原生图标的图片资源。文件名需要和 info.plist 中保持一致(注意 info.plist 中用到了两次 "BitmapNew"),同时这也是你在代码中设置图标时,需要给 API 传入的参数。同样是 60pt@2x 和 60pt@3x 的图片资源,文件不通过 Assets.xcassets 添加进来,而是直接放到目录中
如果你需要支持 iPad,建议这里使用 83.5pt(iPad Pro)的图片资源。另外还有些其他关于在 iPad 上替换图标的注意事项,在这里有说明,注意我们这里在 info.plist 里面所用的 key 是CFBundleIcons
,还有另外一个 key 是 CFBundleIcons~ipad
3、编写修改图标代码:
/**
修改App图标
@param imageName 图片名称,nil:表示还原主图片
*/
-(void)changeAppIconWithName:(NSString *)imageName{
if([[UIApplication sharedApplication] supportsAlternateIcons]){
NSLog(@"支持更换图标");
}else{
NSLog(@"不支持更换图标");
return;
}
NSString *alternateIconName = [UIApplication sharedApplication].alternateIconName;
if(alternateIconName == nil){
[[UIApplication sharedApplication] setAlternateIconName:imageName completionHandler:^(NSError * _Nullable error) {
if(error){
NSLog(@"%@",error);
}
}];
}
}
Paste_Image.png
-
APFS
苹果文件系统(英语:Apple File System,简称APFS)是一个适用于macOS、iOS、tvOS和watchOS的文件系统。它的目的是解决现今使用[HFS+文件系统的核心问题。
APFS为闪存和固态存储设备优化,具有写入时复制等设计特点,使用I/O合并改进性能。
- 特点
* 克隆
克隆可以使文件系统快速、高效地在同个卷上复制文件,且不须占用额外存储空间。对数据的修改将写入其他位置,未修改的块则继续共享使用。对文件的更改将保存为克隆文件的差异,减少文档修订和复制所需的存储空间。
* 快照
APFS支持创建特定时间点、文件系统只读实例的快照
* 加密
APFS将实现文件和敏感元数据的磁盘加密。它对一个容器中的每个卷支持下列加密模型:
- 不加密
- 单密钥加密
- 多密钥加密,每个文件使用单独的密钥加密,元数据再使用另一个密钥加密
- 数据完整性
APFS利用现代硬件固件中强大的[校验和]和[错误纠正]的优势。为确保[数据完整性],APFS 对元数据采用校验和技术,但未同时对用户数据采用。 - 崩溃防护
苹果文件系统被设计为可以免受崩溃带来的数据损失。
- 限制与不足
APFS不为用户数据提供校验和,但通过基于元数据的校验和检查来确保数据完整。
另外,它并不利用易失性存储器可比特寻址这一特性。
网友评论