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. 【组合数】[NOIP2011]选择客栈[c++]

    题目描述 丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号.每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均 ...

  2. C# Xamarin For Android自动升级项目实战

    一.课程介绍 “明人不说暗话,跟着阿笨一起玩Xamarin”,本次分享课程阿笨将带来大家一起学习Xamarin For Android系列<C# Xamarin For Android自动升级项 ...

  3. Docker 下载镜像慢的问题解决方法

    让你火箭般的速度下载docker镜像! 的冷漠度 百家号17-11-1713:09 因为有墙的原因所以在国内下载docker镜像的速度非常慢,有时候是几kb每秒,那个蛋疼的等待,真是谁等谁知道!下面我 ...

  4. T SQL 将一列多行数据合并为一行

    SQL Server 在进行数据迁移和报表处理的时候遇到将一列多行数据拼接为一个字符串的情形,查找相关的资料整理如下,提供两种方法. Table:SC Student Course 张三 大学语文 李 ...

  5. 对Rethinking ImageNet Pre-training的理解

    Kaiming He的这篇论文提出了一个新问题,在目标检测.实例分割和人体关键点检测等领域,预训练的模型是否真的起了作用?通过实验,得出结论:迭代次数较少时,使用预训练模型效果更好:但是只要迭代次数充 ...

  6. TensorFlow迭代速度变慢的问题

    最近用TensorFlow实现遗传算法(Genetic Algorithms),发现迭代速度越来越慢,用time.time()观察以后,发现每次迭代都要比上一次慢0.5秒左右,但是每次迭代的计算量是差 ...

  7. exception:Failed to execute 'toDataURL' on 'HTMLCanvasElement' 解决方案

      1.情景展示 当使用canvas 将图片转为base64报错信息如下: Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLC ...

  8. 网页出现400 Bad Request Request Header Or Cookie Too Large错误的解决方法

    在开发项目过程中,突然遇到400 Bad Request Request Header Or Cookie Too Large的报错,我也是第一次出现这样的错误,感觉还是挺新奇的. 分析下出现错误的原 ...

  9. Debug 路漫漫-07

    201811—201903???   1)关于训练参数是复数的问题    ——q_k ^theta   q_k(是item的特征矩阵)中有可能是负数,而指数 theta 如果是含小数点的话,就会产生复 ...

  10. C# 中字符串转换成日期

    我们在处理字符串日期格式常用DateTime.Pares() 但是这个形式的转换是相当有限的,有些C#是会不懂你写入的日期格式的如20031231.那么类似 "20100101" ...