将我的IOS应用程序连接到现有的PHP应用程序

时间:2013-07-31 02:09:20

标签: php mysql ios mobile

我对创建利用现有PHP / MySQL应用程序的IOS应用程序感兴趣。

目前,我的应用程序是基于网络的。我想启用该工具的移动版本,而无需重新创建我已经在PHP中实现的逻辑。基本上,我想保持我的IOS应用程序很薄,并使用某种形式的RPC来与我的PHP代码进行交互。

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

2 个答案:

答案 0 :(得分:0)

将PHP与JSON配合使用,可以非常轻松地在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开始,感谢Twitter,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。

答案 1 :(得分:0)