2012-12-05 2 views
1

나는 웹 사이트 (php)를 만들었고 사용자와 게시 물을 가질 수 있도록 데이터베이스에 연결합니다. 포럼처럼 상상해보십시오. 이제 어떻게하면 동일한 데이터베이스에 연결되는 iPhone 앱을 제작할 수 있을까요? 나는 이미 앱을 만들기 위해 C++을 가르치고 있지만 어떻게 데이터베이스에 연결할지 모르겠습니다.데이터베이스에 연결하는 앱 디자인

답변

2

웹 기반 데이터베이스를 수행하는 가장 좋은 방법은 HTTP 요청을 PHP 스크립트에 사용하는 것입니다. 그렇게하면 실제 프로젝트에서 제외 된 사용자 이름과 비밀번호를 남겨두고 앱에서 데이터베이스 연결을 설정할 필요가 없습니다. POST와 GET 변수를 보내서 필요한 것을 할 수있는 PHP 스크립트를 만드십시오. 내 경험과 선호도에

1

에서

***

당신은 할 수있는 모든 행동에 대한 API 엔드 포인트를 구축 할 필요가있다.

예 : 게시물 /보기 글/편집 게시물 추가/

당신이 PHP 프레임 워크를 사용하는 경우를 만들기위한 도우미 라이브러리가 종종있다 http://en.wikipedia.org/wiki/Representational_state_transfer

REST 것 사용하는 인기있는 잘 문서화 된 아키텍처 API

이 튜토리얼 http://net.tutsplus.com/tutorials/php/creating-an-api-centric-web-application/

0

나는 당신이 그것을 이해하는 데 도움이 아이폰 개발에 초보자 및 한 달 정도 아이폰을 사용하고있다. 이에 대한 몇 가지 팁을주고 싶습니다 : 당신은 다음의 웹 API에 연결하는 일반 작품

2

)에서 엑스 코드를 아이폰 응용 프로그램을 만드는 방법 때문에

1) 첫 번째 목표 - C에 읽어을, 당신 AFNetworking을 사용할 수 있습니다. 시작하려면 Tutorial입니다. 데이터를 가져올 API가 무엇인지 알아야합니다.

3) 다음은 API의 JSON 또는 XML 데이터인지 여부에 따라 데이터를 구문 분석해야합니다. 이렇게하면 데이터를 얻을 수 있습니다.

4) 이제 서버에서 URL에 HTTP 요청을 발행하여 서비스에 연결할 수있는 UI

0

앱을 사용하여 엑스 코드에 표시 할 수 있습니다. 내가 원하는 모든 백엔드를 사용할 수 있으며, 거의 모든 호스팅 서비스가 이러한 도구를 지원할 것이므로 PHP를 MySQL과 개인적으로 사용했습니다. 기능을 수행하는 URL을 정의하여 조회를 구성합니다. 일반적으로 서버의 데이터를 변경할 때 POST 요청을 사용하고 정보에 대해 읽기 전용 요청을 할 때 GET 요청을 사용하려고합니다.

무단 액세스를 방지하기 위해 URL과 서버를 신중하게 설정해야합니다. 자세한 내용은 여기에 설명하지 않지만 이에 대한 좋은 조언이 가득합니다. 여기서 URL을 사용하여 서비스에 연결하는 방법에 대해 중점적으로 다룰 것입니다.

요청을 보내고 응답을받는 데 도움이되는 라이브러리를 사용하는 것이 좋습니다. 위로 (1 년 전)이 작업을 수행하는 앱에서 활발히 작업 할 때, 나는 무료로 사용할 수있는 AsiHTTPRequest 라이브러리를 사용했지만 이제는 작성자가 지원을 중단했음을 알 수있다. 내 0.02 : 내 애플 리케이션을 위해 잘 작동 : http://allseeing-i.com/ASIHTTPRequest/

두 부분 : 1) 보내기 요청, 2) 수신 및 처리 응답이 있습니다.일반적으로 요청이 비동기 적으로 실행되도록하여 요청이 인터넷을 통해 진행되고 서버가 요청을 처리하고 응답을받는 동안 앱이 멈추지 않도록해야합니다.

결과를 구문 분석 할 때 편리하도록 웹 앱 백엔드에서 Apple plist 형식으로 응답을 보냅니다. 또는 XML을 사용할 수도 있지만 SDK에 대한 지원이 구워져 있기 때문에 plist를 좋아합니다.

여기 않습니다 내 응용 프로그램에서 코드의이 :

// this allows you to switch between the "live" web service and a local development copy 
#ifndef _USE_LOCAL_SERVER_ 
#define kAppCustomerInfoURL @"https://mysite.com/path/to_my/service/" 
#else 
#define kAppCustomerInfoURL @"http://localhost/path/to_my/service/" 
#endif 

NSURL *url = [NSURL URLWithString:kAppCustomerInfoURL]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
// udm is my singleton that holds properties for the current user 
[request setPostValue:[udm getProperty:kNameProperty] forKey:@"name"]; 
[request setPostValue:[udm getProperty:kPhoneProperty] forKey:@"phone"]; 
[request setPostValue:[udm getProperty:kEmailProperty] forKey:@"email"]; 
[request setPostValue:[udm getProperty:kCityProperty] forKey:@"city"]; 
[request setPostValue:[udm getProperty:kAddressProperty] forKey:@"address"]; 
[request setPostValue:[udm getProperty:kDeliveryNotesProperty] forKey:@"comments"]; 
[request setPostValue:[NSString stringWithFormat:@"%u", arc4random()] forKey:@"random"]; 

[request setValidatesSecureCertificate:NO]; 
[request setDelegate:self]; 
[request startAsynchronous]; 

개체가 requestFinished를 구현해야합니다 : 및 requestFailed : 방법 :

- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    NSString *response = [request responseString]; 

    NSData* plistData = [response dataUsingEncoding:NSUTF8StringEncoding]; 
    NSPropertyListFormat format; 
    NSString *errorStr; 
    NSDictionary* plist = [NSPropertyListSerialization propertyListFromData:plistData 
                  mutabilityOption:NSPropertyListImmutable 
                    format:&format 
                  errorDescription:&errorStr]; 
    if (! plist) 
    { 
     // NSLog(@"Error: %@", errorStr); 
     [errorStr release]; 
     return; 
    } 

    for (NSString *key in [plist allKeys]) 
    { 
     if ([key isEqualToString:@"result"]) 
     { 
       NSString *resultStr = [plist objectForKey:@"result"]; 
       if (! [resultStr isEqualToString:@"ok"]) 
       { 
        // set an error 
       } 
     } 
     // more cases 
    } 
} 

여기 내 응답이 실패 있어요 방법은, 일부 응용 프로그램을 설정 요청 완료시 앱의 다른 부분이 업데이트를 위해 사용할 수있는 요청이 완료되었다는 알림을 보냅니다.

- (void)requestFailed:(ASIHTTPRequest *)request 
{ 
    NSError *error = [request error]; 
    NSLog(@"update customer info failed: %@", [error localizedDescription]); 

    self.syncDataToServerOK = NO; 

    [[NSNotificationCenter defaultCenter] postNotificationName:kUserDataSyncFinishedNotification object:nil]; 
} 
관련 문제