LTUpdate 使用方法

LTUpdate 的作用是提醒用户 AppStore 中有新的版本可以下载。相比其它提醒升级的类,LTUpdate 没有强制使用 UIAlertView。它还提供了本地提醒的封装,可以在离开 App 后提醒用户升级,这样就不会打断用户的使用,提供更好的体验。除此之外,它还有以下特性:

  • 支持多达 25 种语言
  • 更新频率控制,日、周、月
  • 提供了“跳过这个版本”的功能
  • 版本的详细信息,如日期、文件大小、更新内容等
  • block 实现的回调
  • 自动适配 ARC/MRC,无需开发人员设置
  • GCD

安装

LTUpdate 不仅可以用拖拽目录的方式安装,也可以用 CocoaPods 安装:

1
pod 'LTUpdate', '~>0.0.2'

设置 App ID

LTUpdate 通过 iTunes Search API 查询 App 的最新版本,需要设置 App 在 AppStore 中的 ID 作为查询参数。打开 {项目名}-Info.plist,新建一个名为 “APP_STORE_ID” 的 Number 类型字段,并填入 App ID。 设置 App ID

引用头文件

安装成功并设置好 App ID 后,需要在 AppDelegate.m 或者 {项目名}-Prefix.pch 中引用 LTUpdate 的头文件:

1
#import "LTUpdate.h"

提醒

LTUpdate 提供了默认设置的封装,只需要在 applicationDidBecomeActive 中加入 [[LTUpdate shared] update];,LTUpdate 就会在发现新版本时用 UIAlertView 提醒用户升级。如果不想用 UIAlertView,可以使用 block 回调:

1
2
3
4
[[LTUpdate shared] update:LTUpdateDaily
    complete:^(BOOL isNewVersionAvailable, LTUpdateVersionDetails *versionDetails) {
    // 发现新版本时你想干啥?
    }];

如果不想打断用户使用 App,可以使用本地提醒:

1
2
3
4
5
6
7
8
9
- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [[LTUpdate shared] updateAndPush:LTUpdateDaily];
}

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    [[LTUpdate shared] reduceNotification:notification then:LTUpdateNotifyThenAlert];
}

这样当程序进入后台时,就会收到一条本地提醒:

本地提醒

更多内容请参考 LTUpdate 项目 或直接查看 LTUpdate.h

iOS

替换静态库中的文件

iPhone 5 发布后最让开发人员烦恼的是 armv7s。有人做了armv7sconvert.c,可以把不带 armv7 的静态库转换成带 armv7s 的静态库。介于现在审核排队非常慢,通常要 3 周甚至更久,我可不敢冒险用它。在兼容 iPhone 5 的过程中学到一些静态库的操作方法,比如察看某个 libXXX.a 中有哪些 编译后的 xxx.o 文件,可以这样操作:

ar -vt libXXX.a

从其中取出一个 xxx.o:

ar -x libXXX.a xxx.o

将修过的 xxx.o 再放回去:

ar -r libXXX.a xxx.o

如果遇到 ar: libXXX.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it),可以先看一下这个 libXXX.a 里包含哪些目标架构:

file libXXX.a

然后抽出某一目标架构:

lipo libXXX.a -thin armv6 -output libXXX-armv6.a
lipo libXXX.a -thin armv7 -output libXXX-armv7.a

最后再合在一起:

mv libXXX.a libXXX.a.original
lipo libXXX-armv6.a libXXX-armv7.a -create -output libXXX.a
iOS