Harpy(兼容版)

git地址:https://github.com/yangchao0033/Harpy

###(iOS5-9适配版本,基于ArtSabintsev/Harpy v3.4.5)

提醒用户你的应用有新的可用版本,并且及时的跳转到App Store进行更新。

关于

Harpy 将用户手机上已安装的iOS app版本与当前App Store最新可用版本进行检查对比。如果有新的可用版本时,使用弹窗及时提醒用户最新版本信息,并然用户选择是否需要进一步操作。

Harry是基于[http://www.semver.org](Semantic Versioning)版本号系统标准执行。

  • Semantic Versioning是一个三位数的版本号系统(例如:1.0.0)
  • Harry同样支持2位数的版本号(例如:1.0)
  • Harpy同时支持4位数的版本号(例如:1.0.0.0)

Swift 支持

当前兼容版本(iOS5-9)暂时不支持swift

特点

  • 支持三种类型的弹框样式 (详见 截图 & Alert Types)
  • 提供可选的代理方法 (详见 Optional Delegate section)
  • 本地化支持超过20+语言

屏幕截图

    • **左图:**强制用户更新app
    • **中图:**提供可选项是否前往更新
    • **右图:**提供跳过当前版本更新的选项
    • 这些样式全部可以通过HarpyAletType枚举进行控制,详见Harpy.h      

  

安装

手动安装(正在准备CocoaPods)

将‘Harpy’文件夹拖入到你的项目中,并选择'copy if needed',包括 Harpy.h 和 Harpy.m 文件

配置

  1. import Harpy.h 导入到 AppDelefate 类中 或者 Pre-Complier Header(.pch)文件中
  2. 在你的Appdelegate中设置appID(必要),设置你的alertType(可选)
  3. 在你的Appdelegate中调用checkVersion方法,三个检测方法调用位置分别位于Appdelegate的启动的代理方法中,可以自行选择使用
    • 在 application:didFinishLaunchingWithOptions: 中调用 checkVersion
    • 在 applicationDidBecomeActive: 中调用 checkVersionDaily
    • 在 applicationDidBecomeActive: 中调用 checkVersionWeekly .
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ // 启用Harpy之前确保你的window可用
[self.window makeKeyAndVisible]; // 为你的应用设置app id
[[Harpy sharedInstance] setAppID:@"<#app_id#>"]; // 设置 UIAlertController 将要基于哪个控制器显示 (适配iOS8+)
[[Harpy sharedInstance] setPresentingViewController:_window.rootViewController]; // (可选)设置代理来追踪用户点击事件,活着的使用自定义的界面来展示你的信息
[[Harpy sharedInstance] setDelegate:self]; // (可选) 设置alertController的tincolor(iOS8+可用)
[[Harpy sharedInstance] setAlertControllerTintColor:@"<#alert_controller_tint_color#>"]; // (可选) 设置你的应用名
[[Harpy sharedInstance] setAppName:@"<#app_name#>"]; /* (可选)设置弹框类型 默认为HarpyAlertTypeOption */
[[Harpy sharedInstance] setAlertType:<#alert_type#>]; /* (可选)如果你的应用只在某些国家或地区可用,你必须使用两个字符的country code来设置应用的可用区域 */
[[Harpy sharedInstance] setCountryCode:@"<#country_code#>"]; /* (可选) 强制指定应用显示语言, 请使用 Harpy.h 中定义的 HarpyLanguage 进行设置。*/
[[Harpy sharedInstance] setForceLanguageLocalization:<#HarpyLanguageConstant#>]; // 执行版本检测
[[Harpy sharedInstance] checkVersion];
} - (void)applicationDidBecomeActive:(UIApplication *)application
{ /*
执行每天检测你的app是否需要更新版本,需要在`applicationDidBecomeActive:`执行最合适
因为这对于的你的应用进如后台很长时间后非常有用。 同时,也会在应用第一次启动时执行版本检测
*/
[[Harpy sharedInstance] checkVersionDaily]; /*
执行每周检测你的app新版本。同理需要将此代码放置在`applicationDidBecomeActive:`中执行。 同时,也会在应用第一次启动时执行版本检测
*/
[[Harpy sharedInstance] checkVersionWeekly]; } - (void)applicationWillEnterForeground:(UIApplication *)application
{
/*
执行app新版本检测,放在此是为了让用户从App Sore跳转回来并重新从后台进入你的
app,并且没有在从App Store中跳转回来之前更新他们app的时候调用 注意:只有当你使用*HarpyAlertTypeForce*样式弹框类型是才使用这种方法 并且会在你第一次启动应用时检测。
*/
[[Harpy sharedInstance] checkVersion];
}

项目上线遇到的问题:

下午提交的审核,当晚2点就过审了,然后第二天发现并没有更新弹框提示....

解决:

/**
Checks to see when the latest version of the app was released.
If the release date is greater-than-or-equal-to `_showAlertAfterCurrentVersionHasBeenReleasedForDays`,
the user will prompted to update their app (if the version is newer - checked later on in this method). 查看应用程序的最新版本何时发布。如果发布日期大于或等于“_showalertaftercurrentversionhasbeenreleaseddays(默认是1天)”, 用户将提示更新他们的应用程序(如果版本更新—稍后在此方法中检查)。
*/

            NSString *releaseDateString = [[results valueForKey:@"currentVersionReleaseDate"] objectAtIndex:];
if (releaseDateString == nil) {
return;
} else {
NSInteger daysSinceRelease = [weakSelf daysSinceDateString:releaseDateString];
if (!(daysSinceRelease >= weakSelf.showAlertAfterCurrentVersionHasBeenReleasedForDays)) {
NSString *message = [NSString stringWithFormat:@"Your app has been released for %ld days, but Siren cannot prompt the user until %lu days have passed.", (long)daysSinceRelease, (unsigned long)weakSelf.showAlertAfterCurrentVersionHasBeenReleasedForDays];
[self printDebugMessage:message];
return;
}
}
daysSinceRelease现在是为0,所以才会没有弹框提示,等一天就可以看到更新弹框了
 

iOS - Harpy版本更新工具兼容版本第三方库的更多相关文章

  1. IOS数据持久化存储之SQLite3第三方库FMDB的使用

    SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非常好的选择,无论是Android还是IOS,都内置了SQLite数据库,现在的版本都是SQLite3.在IOS中使用SQLite如果使 ...

  2. 最全面的iOS和Mac开源项目和第三方库汇总

    标签: UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UIT ...

  3. ios开发经常使用到的第三方库

    由于iOS SDK相对照较底层,所以开发人员就得受累多做一些体力活.只是幸运的是,有非常多第三方的类库能够用来简化非常多不必要的工作.经过作者团队的谨慎讨论.他们 评选出了10款可以极大提高iOS开发 ...

  4. ios开源项目(各种有用的第三方库)

    状态栏:MTStatusBarOverlay  下拉刷新:EGOTableViewPullRefresh  网络应用:ASIHTTPRequest  等待特效:MBProgressHUD  JSON解 ...

  5. iOS 推荐一个下载用的第三方库

    AFNetworking有下载功能,但是下载功能比较基本,要实现复杂下载功能需要自己写一些代码.今天在github上找到了一个下载功能的开源项目,非常不错,链接如下:https://github.co ...

  6. 【iOS】Xcode 使用 CocoaPods 导入第三方库后没有提示

    Github 上下载的开源项目,运行后出现的 [iOS]build diff: /../Podfile.lock: No such file or directory 解决后,又出现了这个问题. 解决 ...

  7. 【转】IOS学习笔记29—提示框第三方库之MBProgressHUD

    原文网址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单 ...

  8. iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView

    iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView 时间:2016-01-19 19:13:43      阅读:630      评论:0      收藏:0   ...

  9. iOS开发之CocoaPods(objective-c第三方库管理工具)

    介绍: iOS开发中,大多数情况下,我们都须要集成一些第三方依赖库.对于一个稍大的项目,用到的第三方依赖库的数量也很可观.CocoaPods是objective-c第三方库管理工具,方便第三方库的管理 ...

随机推荐

  1. spring中的多线程aop方法拦截

    日常开发中,常用spring的aop机制来拦截方法,记点日志.执行结果.方法执行时间啥的,很是方便,比如下面这样:(以spring-boot项目为例) 一.先定义一个Aspect import org ...

  2. MAC 开启与关闭SIP

    1. 查看SIP状态 在终端中输入csrutil status,就可以看到是enabled还是disabled. 2. 关闭SIP S1  重启MAC,按住cmd+R直到屏幕上出现苹果的标志和进度条, ...

  3. js格式化格林威治时间

    格式化时间:Sat Aug 05 00:00:00 CST 2017 function fermitTime(time){ var now = new Date(time); var year = n ...

  4. grid - 网格项目层级

    网格项目可以具有层级和堆栈,必要时可能通过z-index属性来指定. 1.在这个例子中,item1和item2的开始行都是1,item1列的开始是1,item2列的开始是2,并且它们都跨越两列.两个网 ...

  5. go在ubuntu下安装

    http://blog.csdn.net/Ceciiiilia/article/details/71483221 综合目前网站上的各种安装方法,找到如下简单配置(不会报错或者少报错…) (一)从官网安 ...

  6. web安全测试---AppScan扫描工具

    安全测试应该是测试中非常重要的一部分,但他常常最容易被忽视掉. 尽管国内经常出现各种安全事件,但没有真正的引起人们的注意.不管是开发还是测试都不太关注产品的安全.当然,这也不能怪我们苦B的“民工兄 弟 ...

  7. iostat中的util和svctm (Two traps in iostat: %util and svctm)

    iostat, from the excellent sysstat suite of utilities, is the go-to tool for evaluating IO performan ...

  8. C++中的三种继承关系

    C++中的三种继承关系 先看类中声明成员时的三种访问权限 public : 可以被任意实体访问 protected : 只允许子类及本类的成员函数访问 private : 只允许本类的成员函数访问 在 ...

  9. Mongodb系列- spring-data-mongodb使用MongoTemplate实现分页查询

    在用spring-data-mongodb框架开发的过程中,需要实现分页查询,就百度了下,没找到满意的又google了下,找到了思路. 在spring-data-mongodb 官方文档中,建议你使用 ...

  10. 理解JAVA的IO

    1. 什么是流Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序列 ...