2013-07-31 45 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

相關問題