现在没时间整理,先把代码贴出来,以后再做详细的思路整理。

1 在AppController.mm的didFinishLaunchingWithOptions方法里面获取本地应用版本信息,保存起来。

 // about App version
NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary];
NSString *versionStr = [infoDictionary objectForKey:@"CFBundleShortVersionString"];
SettingsManager::getInstancePtr()->getShortVersion() = [ versionStr UTF8String ];

2 在加载页面,使用http向服务器版本信息,如果返回的版本信息和在第一步中得到的不一致,进入混编文件。

  这只是一些参数。

 //转到appstore 里面
std::string t = MessageManage::getInstancePtr()->getStrMessage(String_Alter_Version_Title);
std::string c = MessageManage::getInstancePtr()->getStrMessage(String_Alter_Version_Content);
std::string b = MessageManage::getInstancePtr()->getStrMessage(String_Alter_Version_Btn);
ICheckVersionHelper::getInstancePtr()->alertView(t,c,b);

3 我把具体的类都贴上来,包括

ICheckVersionHelper.h  ICheckVersionHelper.app

CheckVersionHelperWin32.h CheckVersionHelperWin32.app

CheckVersionHelperIOS.mm CheckVersionHelperIOS.h

ICheckVersionHelper.h

#ifndef __ICheckVersionHelper_H__
#define __ICheckVersionHelper_H__ #include "cocos2d.h"
class ICheckVersionHelper
{
public:
ICheckVersionHelper(); virtual ~ICheckVersionHelper(); static ICheckVersionHelper * getInstancePtr(); virtual void alertView(std::string titlestr,std::string contentstr,std::string btnstr) {} }; #endif// #ifndef __ICheckVersionHelper_H__

ICheckVersionHelper.app

#include "PrecompiledHeader.h"
#include "ICheckVersionHelper.h" ICheckVersionHelper::ICheckVersionHelper()
{
} ICheckVersionHelper::~ICheckVersionHelper()
{
}

CheckVersionHelperWin32.h

#ifndef __CheckVersionHelperWin32_H__
#define __CheckVersionHelperWin32_H__ #include "ICheckVersionHelper.h" class CheckVersionHelperWin32 : public ICheckVersionHelper
{
public:
CheckVersionHelperWin32(); ~CheckVersionHelperWin32(); static CheckVersionHelperWin32 * getInstancePtr(); private:
static CheckVersionHelperWin32 m_Singleton; }; #endif// #ifndef __CheckVersionHelperWin32_H__

CheckVersionHelperWin32.app

#include "PrecompiledHeader.h"
#include "CheckVersionHelperWin32.h" CheckVersionHelperWin32 CheckVersionHelperWin32::m_Singleton; ICheckVersionHelper * ICheckVersionHelper::getInstancePtr()
{
return ( CheckVersionHelperWin32::getInstancePtr() );
} CheckVersionHelperWin32::CheckVersionHelperWin32()
{
} CheckVersionHelperWin32::~CheckVersionHelperWin32()
{
} CheckVersionHelperWin32 * CheckVersionHelperWin32::getInstancePtr()
{
return ( &m_Singleton );
}

CheckVersionHelperIOS.h

#ifndef __CheckVersionHelperIOS_H__
#define __CheckVersionHelperIOS_H__ #include "ICheckVersionHelper.h"
#import <UIKit/UIKit.h> @interface CheckVersionHelper : UIViewController<UIAlertViewDelegate> {
}
@property (nonatomic,retain) NSString *mytitle;
@property (nonatomic,retain) NSString *mycontent;
@property (nonatomic,retain) NSString *mybtn;
- (void) showMyView;
@end class CheckVersionHelperIOS : public ICheckVersionHelper
{
public:
void alertView(std::string titlestr,std::string contentstr,std::string btnstr) override; static CheckVersionHelperIOS * getInstancePtr(); protected:
CheckVersionHelperIOS() {} ~CheckVersionHelperIOS() {} private:
static CheckVersionHelperIOS m_Singleton; }; #endif

CheckVersionHelperIOS.mm 里面的apple id 我瞎写的。

#include "CheckVersionHelperIOS.h"

@implementation CheckVersionHelper

- (id) init
{
return self;
} - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == [alertView cancelButtonIndex]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=7100000"]];
}
}
- (void)showMyView
{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil
message:self.mycontent
delegate:self
cancelButtonTitle:self.mybtn
otherButtonTitles:nil,nil];
[alert show];
[alert release];
}
@end ICheckVersionHelper * ICheckVersionHelper::getInstancePtr()
{
return ( CheckVersionHelperIOS::getInstancePtr() );
} CheckVersionHelperIOS CheckVersionHelperIOS::m_Singleton; CheckVersionHelperIOS * CheckVersionHelperIOS::getInstancePtr()
{
return ( &m_Singleton );
}
void CheckVersionHelperIOS::alertView(std::string titlestr,std::string contentstr,std::string btnstr)
{
CheckVersionHelper * myhelper = [[CheckVersionHelper alloc] init];
[myhelper setMytitle:[NSString stringWithUTF8String:titlestr.c_str()]];
[myhelper setMycontent:[NSString stringWithUTF8String:contentstr.c_str()]];
[myhelper setMybtn:[NSString stringWithUTF8String:btnstr.c_str()]];
[myhelper showMyView ];
}

ios的app,有新版本时必须先更新。的更多相关文章

  1. iOS APP下载安装时,如果出现此时无法下载安装APP的字样时,一些解决思路

    1.在iosAPP下载安装时,如果出现此时无法下载安装APP的字样时,可能是苹果系统进行了支持更新,并需要我们确认条约.至于如何判断是否是苹果系统进行了更改,只需要我们进入开发者账号,进入我的账户(A ...

  2. [App Store Connect帮助]一、 App Store Connect 使用入门(4)iOS 版 App Store Connect

    通过 iOS 版 App Store Connect,您可以在移动设备上查看销售数据.App 元数据和顾客评论.您还可以检查 App 状态.发布您 App 的新版本并回应“Resolution Cen ...

  3. ios h5 app avalon tap点击事件失效及点击延迟300ms问题解决方法

    1.ios h5 app avalon tap事件失效 使用MUI制作app界面,使用avalon.js渲染数据,发现在(Android上正常)ios上运行时容器div的avalon的ms-on-ta ...

  4. 【如何快速的开发一个完整的iOS直播app】(播放篇)

    原文转自:袁峥Seemygo    感谢分享.自我学习 前言 在看这篇之前,如果您还不了解直播原理,请查看上篇文章如何快速的开发一个完整的iOS直播app(原理篇) 开发一款直播app,集成ijkpl ...

  5. 【如何快速的开发一个完整的iOS直播app】(原理篇)

    原文转自:袁峥Seemygo    感谢分享.自我学习 目录 [如何快速的开发一个完整的iOS直播app](原理篇) [如何快速的开发一个完整的iOS直播app](播放篇) [如何快速的开发一个完整的 ...

  6. iOS:app直播---原理篇

    [如何快速的开发一个完整的iOS直播app](原理篇) 转载自简书@袁峥Seemygo:http://www.jianshu.com/p/7b2f1df74420   一.个人见解(直播难与易) 直播 ...

  7. iOS设置app应用程序文件共享

    1.iOSapp应用程序文件共享 当我们用itnues连接到设备时,在应用程序栏目下面,文件共享下,点击 对应的程序,即可以在程序右边栏目里面看到应用程序共享的数据, 此时,我们可以通过右下角的 添加 ...

  8. 如何快速的开发一个完整的iOS直播app(原理篇)

    目录 [如何快速的开发一个完整的iOS直播app](原理篇) [如何快速的开发一个完整的iOS直播app](播放篇) [如何快速的开发一个完整的iOS直播app](采集篇) 前言 大半年没写博客了,但 ...

  9. iOS 的 APP 在系统中如何适配不同的屏幕的尺寸

    iOS 的 APP 在系统中如何适配不同的屏幕的尺寸 标签: 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone ...

随机推荐

  1. 团队作业7——第二次项目冲刺(Beta版本)-第三篇

    1.工作分工: 团队成员 分工 郭达22120 项目整合,后台代码 刘德培44060 前台界面优化 石浩洋22061 前台界面优化 曾繁钦22056 前台界面优化.测试 孙斌22030 后台代码 2. ...

  2. MVC4 DropDownList (二) — 省市联动

    1.添加省份和城市类 //省份 public class Province { public int Id { get; set; } public string Name { get; set; } ...

  3. sublime text 输入法不跟随光标

    1.引子 sublime text 有个BUG,那就是不支持中文的鼠标跟随(和PS类似输入的光标和文字候选框不在一起).如下图: 2.插件 安装IMESupport插件即可插件,这款插件是日本人写的. ...

  4. 第24天:js-函数变量声明提升

    一.函数声明1.自定义函数function fun1(){ alert("我是自定义函数");}fun2();//函数不调用,自己不执行2.直接量声明var fun2=functi ...

  5. 反向传播算法 Backpropagation Algorithm

    假设我们有一个固定样本集,它包含 个样例.我们可以用批量梯度下降法来求解神经网络.具体来讲,对于单个样例(x,y),其代价函数为:这是一个(二分之一的)方差代价函数.给定一个包含 个样例的数据集,我们 ...

  6. BZOJ4869 六省联考2017相逢是问候(线段树+欧拉函数)

    由扩展欧拉定理,a^(a^(a^(……^x)))%p中x作为指数的模数应该是φ(φ(φ(φ(……p)))),而p取log次φ就会变为1,也即每个位置一旦被修改一定次数后就会变为定值.线段树维护区间剩余 ...

  7. nginx日志切割总结

    Nginx日志切割   方法1(脚本+定时执行): #step1:加脚本 cut_nginx_log.sh,主进程把USR1信号发给worker,worker接到这个信号后,会重新打开日志文件 #!/ ...

  8. Tensorflow框架初尝试————搭建卷积神经网络做MNIST问题

    Tensorflow是一个非常好用的deep learning框架 学完了cs231n,大概就可以写一个CNN做一下MNIST了 tensorflow具体原理可以参见它的官方文档 然后CNN的原理可以 ...

  9. POJ1651:Multiplication Puzzle——题解

    http://poj.org/problem?id=1651 题目大意:同“乘法游戏”,这里将乘法游戏的题面复制过来. 乘法游戏是在一行牌上进行的.每一张牌包括了一个正整数.在每一个移动中,玩家拿出一 ...

  10. BZOJ4516:[SDOI2016]生成魔咒——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4516 魔咒串由许多魔咒字符组成,魔咒字符可以用数字表示.例如可以将魔咒字符 1.2 拼凑起来形成一 ...