iOS - Harpy版本更新工具兼容版本第三方库
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 文件
配置
- import Harpy.h 导入到 AppDelefate 类中 或者 Pre-Complier Header(.pch)文件中
- 在你的
Appdelegate中设置appID(必要),设置你的alertType(可选) - 在你的
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版本更新工具兼容版本第三方库的更多相关文章
- IOS数据持久化存储之SQLite3第三方库FMDB的使用
SQLite是一种小型的轻量级的关系型数据库,在移动设备上使用是非常好的选择,无论是Android还是IOS,都内置了SQLite数据库,现在的版本都是SQLite3.在IOS中使用SQLite如果使 ...
- 最全面的iOS和Mac开源项目和第三方库汇总
标签: UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UIT ...
- ios开发经常使用到的第三方库
由于iOS SDK相对照较底层,所以开发人员就得受累多做一些体力活.只是幸运的是,有非常多第三方的类库能够用来简化非常多不必要的工作.经过作者团队的谨慎讨论.他们 评选出了10款可以极大提高iOS开发 ...
- ios开源项目(各种有用的第三方库)
状态栏:MTStatusBarOverlay 下拉刷新:EGOTableViewPullRefresh 网络应用:ASIHTTPRequest 等待特效:MBProgressHUD JSON解 ...
- iOS 推荐一个下载用的第三方库
AFNetworking有下载功能,但是下载功能比较基本,要实现复杂下载功能需要自己写一些代码.今天在github上找到了一个下载功能的开源项目,非常不错,链接如下:https://github.co ...
- 【iOS】Xcode 使用 CocoaPods 导入第三方库后没有提示
Github 上下载的开源项目,运行后出现的 [iOS]build diff: /../Podfile.lock: No such file or directory 解决后,又出现了这个问题. 解决 ...
- 【转】IOS学习笔记29—提示框第三方库之MBProgressHUD
原文网址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单 ...
- iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView
iOS:实现图片的无限轮播(二)---之使用第三方库SDCycleScrollView 时间:2016-01-19 19:13:43 阅读:630 评论:0 收藏:0 ...
- iOS开发之CocoaPods(objective-c第三方库管理工具)
介绍: iOS开发中,大多数情况下,我们都须要集成一些第三方依赖库.对于一个稍大的项目,用到的第三方依赖库的数量也很可观.CocoaPods是objective-c第三方库管理工具,方便第三方库的管理 ...
随机推荐
- Using async-await on .net 4
I'm currently starting to create an application that would profit a lot from C# 5's async-await feat ...
- 通过脚本调用MSBuild编译项目时指定Configuration(解決方案配置)和Platform(解決方案平台),Rebuid(重新生成解决方案),Clean(清理解决方案)
为了方便打包测试,自己PowerShell写了一个编译和发布的脚本,调用msbuild通过命令行来编译当前解决方案 后来发现一个问题,用VS编译解决方案,我通过 项目属性-Build设置 Releas ...
- Android support 26.0.0-alpha1 产生的问题(zz)
针对以下两个错误 Java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/animation/Animato ...
- gtest环境安装
gtest全称Google Test,是Google的C++测试框架,有很多优秀的软件都会依赖这个环境编译或者在开发中也会用到,gtest的编译非常简单,下面简单说明一下安装过程. gtest git ...
- grid - 隐式网格
当网格项目确认在显式网格之外时就会创建隐性网格,当没有足够的空间或者显式的网格轨道来设置网格项目,此时网格项目就会自动创建隐式网格. 隐式网格可以定义:grid-auto-rows.grid-auto ...
- Android编码学习之Adapter
1. Apter的作用 Adapter是将数据绑定到UI界面上的桥接类.Adapter负责创建显示每个项目的子View和提供对下层数据的访问.Adapter的作用就是将要在列表内显示的数据和列表本身结 ...
- InfluxDB服务器启动流程
操作系统 : CentOS7.3.1611_x64 go语言版本:1.8.3 linux/amd64 InfluxDB版本:1.1.0 源码路径: github.com/influxdata/infl ...
- 微信SDK登录无法调起,微信SDK无法接收回调的几种解决办法
今天有位同事请求帮忙调试微信登录问题,他遇到了以下2个问题,所以,写篇日志备忘,如果有其它朋友遇到此类问题,都可以照此解决! 平时在开发中,有些开发者经常会遇到微信登录SDK登录时,无法调起微信客户端 ...
- linux ls命令教程,ls命令怎么用,全部招数都教你
linux ls命令的用法大全 学习linux这么久了,最常用的命令莫属 ls命令了,今天就总结下ls命令的用法与经验技巧. ls命令按文件大小查看文件 a.降序:ls -lsh moudae ...
- 转载:Quartz.NET 入门
分享自:http://www.cnblogs.com/jys509/p/4628926.html 概述 Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮 ...