-
本帖最后由 关中coder 于 2013-4-25 18:41 编辑 *
我见过网上有哥们有obc写了个检测版本的方法 , 我用C++写了个,这里用到了 jsoncpp, CChttpRequest 。直接看代码cocos2d::extension::CCHttpRequest* request = new cocos2d::extension::CCHttpRequest(); request->setUrl(“http://itunes.apple.com/lookup?id=你的应用程序ID”); request->setRequestType(cocos2d::extension::CCHttpRequest::kHttpPost); request->setResponseCallback(CCDirector::sharedDirector()->getRunningScene(), callfuncND_selector(CGameScene::onHttpRequestCompleted));
// write the post data const char* postData = “”; request->setRequestData(postData, strlen(postData));
request->setTag(“POSTVision”); cocos2d::extension::CCHttpClient::getInstance()->send(request);
//request->release(); 这个release不知道为什么有时候崩溃debug版本没事害的我把app reviewer全家老小都骂了一便, 我先注解了 泄露点内存!!!!!有点? 等待大神解决。
检测当前版本
string CVisionCheck::GetCurVision()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
string pszPath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(“Info.plist”);
CCDictionary *dict = CCDictionary::createWithContentsOfFileThreadSafe(pszPath.c_str());
std::string vision = dict->valueForKey(“CFBundleVersion”)->getCString();
return vision;
#endif
return “”;
}
下面是回调方法
void CGameScene::onHttpRequestCompleted(cocos2d::CCNode sender, void data)
{
CCHttpResponse response = (CCHttpResponse)data;
if (!response)
{
return;
}
// You can get original request type from: response->request->reqType
if (0 != strlen(response->getHttpRequest()->getTag()))
{
CCLog("%s completed", response->getHttpRequest()->getTag());
}
int statusCode = response->getResponseCode();
char statusString = {};
sprintf(statusString, “HTTP Status Code: %d, tag = %s”, statusCode, response->getHttpRequest()->getTag());
CCLog(“response code: %d”, statusCode);
if (!response->isSucceed())
{
CCLog(“response failed”);
CCLog(“error buffer: %s”, response->getErrorBuffer());
return;
}
// dump data
std::vector buffer = response->getResponseData();
printf(“Http Test, dump data: “);
char szBuffer;
memset(szBuffer, 0, 102400);
for (unsigned int i = 0; i < buffer->size(); i++)
{
printf(”%c”, (buffer));
szBuffer = (buffer);******
}******
printf("
“);******
string strDecodeBuffer = szBuffer;******
if( strDecodeBuffer.empty() )******
{******
return;******
}******
Json::Value root;******
if( parseAndSaveValueTree( strDecodeBuffer, “”, root ) )******
{******
return;******
}******
//CCLOG(strDecodeBuffer.c_str());******
string NewVision;******
for( int i = 0; i < root"results”].size(); i++ )******
{******
if(!root"results"].isNull())******
{******
NewVision = root"results"]“version”].asString();******
}******
}******
string curVision = CVisionCheck::GetInstance()->GetCurVision();******
//#ifdef COCOS2D_DEBUG******
// curVision = “1.0”;******
// NewVision = “1.1”;******
//#endif******
if( NewVision.empty() )******
{******
return;******
}******
if(curVision != NewVision )******
{******
float fCurVison = atof( curVision.c_str() );******
float fNewVision = atof( NewVision.c_str() );******
if( fCurVison < fNewVision )******
{****** CCMessageBox(“有新的版本拉亲”, “提示”);******
}******
}******
}***