zoukankan      html  css  js  c++  java
  • ios的app,有新版本时必须先更新。

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

    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 ];
    }
  • 相关阅读:
    CSS3:三个矩形,一个宽200px,其余宽相等且自适应满铺
    pidera安装node.js(树莓派)
    深入JavaScript模块化编程
    c# 多显示器设置主屏幕(Set primary screen for multiple monitors)
    c# 获取移动硬盘信息、监听移动设备的弹出与插入事件
    C# 弹出USB外接硬盘(U盘)
    log4net 自定义Appender
    Scrum 思考
    监控浏览器关闭事件
    判断地图的点是否在面内 腾讯地图
  • 原文地址:https://www.cnblogs.com/lan0725/p/3382179.html
Copyright © 2011-2022 走看看