2013-07-31 46 views
2

我有兴趣创建一个利用现有PHP/MySQL应用程序的IOS应用程序。将我的IOS应用程序连接到现有的PHP应用程序

目前,我的应用程序是基于Web的。我想在不重新创建我已经在PHP中实现的逻辑的情况下启用该工具的移动版本。基本上,我想保持我的IOS应用程序的精简并使用某种形式的RPC与我的PHP代码进行交互。

我想通过使用XML创建一个查询/响应系统来做一些自定义的事情。但是,我担心我正在重新创造轮子。任何关于最佳方式的建议?

+0

使用JSON而不是XML,因为iOS 5苹果已经很容易与 – meda

+0

工作,为什么不使用UR现有应用在PHP中创建一个API和移动应用查询的API?这样你就可以精确控制你想要在外部暴露的东西 – everconfusedGuy

回答

0

与JSON合作使用PHP使PHP和iOS之间的通信非常容易。

在服务器上,阵列可以如下被格式化为JSON:

服务器示例

<?php 
$response = cydia_check("eswick", $_GET['package'], $_GET['version'], $_GET['udid'], $_SERVER['REMOTE_ADDR'], "local", $apikey);//Example function, returns an array. (In this case, checks an activation server to verify if the app was really purchased.) 

print json_encode($response);//Prints JSON encoding of array to stdout. 
?> 

作为iOS 5的的,由于微博Foundation包含一个类,可以很方便地解析JSON。这里是调用和分析上面的PHP函数的一些示例代码:

客户实例

#define PACKAGE "com.eswick.drmtest" 
#define VERSION "0.8" 

NSString *requestAddress = [NSString stringWithFormat:@"http://www.eswick.com/check.php?package=%@&version=%@&udid=%@", PACKAGE, VERSION, MGCopyAnswer(kMGUniqueDeviceID)]; 

NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestAddress]]; 



NSError *error = [[NSError alloc] init]; 
NSHTTPURLResponse *responseCode = nil; 

NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error];//Get the output of the PHP page we loaded. 

if(!responseData) 
    return false; 

NSError *parseError = nil; 
id result = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&parseError];//Parse the JSON output from responseData. 

if ([result isKindOfClass:[NSDictionary class]]){//Make sure the output is an array. 
    NSString *state = [result valueForKey:@"state"];//Check the array returned by PHP for a value named 'state'. 

    if (!state){//If it doesn't exist, fail. 
     return false; 
    }else{ 
     if([state isEqualToString:@"purchased"])//If app is truly purchased, return success. 
      return true; 
    } 

} 

这应该给你这是如何工作的总体思路。你将不得不改变它以适应你的需求,但这是一个非常基本的概念。

显然,不实际上使用本例如代码为DRM。

+0

完美 - 谢谢! –

+0

很高兴能帮到你!请记住,如果这解决了您的问题,请将其标记为答案(并且最好将其提升为D)。它有助于回答者的声誉! – eswick

相关问题