Cocos2d-x로 Parse.com에 로그인

12007 단어 cocos2d-xParse
Parse.com은 모바일 앱에 백엔드를 제공하는 BaaS 중 하나로 로그인 및 데이터 저장 등 서버 측에서 처리해야 하는 기능을 쉽게 추가할 수 있습니다.

이것을 Cocos2d-x에서 사용해 보겠습니다. 샘플 프로젝트는 다음과 같습니다.
ntotani/cocos2dx-parsecom

Parse.com에서는 iOS, Android용 SDK가 각각 제공되므로 Cocos2d-x에서는 Plugin-X에서 이를 이용합니다. Plugin-X 자체의 도입은 다른 기사 에 있습니다. 우선 설정과 로그인을 작성합니다.

UserParse.m
- (void) configDeveloperInfo : (NSMutableDictionary*) cpInfo
{
    [Parse setApplicationId:[cpInfo objectForKey:@"ApplicationID"]
                  clientKey:[cpInfo objectForKey:@"ClientKey"]];
    [PFTwitterUtils initializeWithConsumerKey:[cpInfo objectForKey:@"TwitterConsumerKey"] consumerSecret:[cpInfo objectForKey:@"TwitterConsumerSecret"]];
}
setApplicationId 에서 Parse.com의 ID와 키를 설정합니다. 또한 이번에는 트위터로 로그인 할 수 있기를 원하기 때문에 트위터의 앱 ID도 설정합니다.

UserParse.m
- (void) login
{
    PFLogInViewController* vc = [[PFLogInViewController alloc] init];
    vc.fields = PFLogInFieldsDefault | PFLogInFieldsTwitter;
    vc.delegate = self;
    [[AdsWrapper getCurrentRootViewController] presentViewController:vc animated:YES completion:nil];
}
PFLogInViewController는 Parse.com 표준 로그인 화면입니다. fields 로 표시할 요소를 설정할 수 있습니다. 또, 플러그인중에서는 RootViewController를 직접 참조할 수 없기 때문에, AdsWrapper 의 헬퍼 메소드를 사용합니다.

로그인 처리가 완료되었으므로 이것을 호출합니다.

AppDelegate.cpp
    auto parse = dynamic_cast<ProtocolUser*>(PluginManager::getInstance()->loadPlugin("UserParse"));
    parse->setDebugMode(true);
    TUserDeveloperInfo devInfo;
    devInfo["ApplicationID"] = "your_app_id";
    devInfo["ClientKey"] = "your_client_key";
    devInfo["TwitterConsumerKey"] = "your_consumer_key";
    devInfo["TwitterConsumerSecret"] = "your_consumer_secret";
    parse->configDeveloperInfo(devInfo);
    parse->setActionListener(&s_parseListener);

Runtime.cpp
    //startScript("");
    auto parse = dynamic_cast<ProtocolUser*>(PluginManager::getInstance()->loadPlugin("UserParse"));
    parse->login();
applicationDidFinishLaunching 등으로 ID를 설정하고 login를 호출합니다. 이번은 샘플이라고 하는 것으로, 접속 대기 화면의 PLAY 버튼을 탭한 타이밍으로 로그인하고 있습니다.

빌드하고 실행합니다. 빠짐없이 Plugin-X를 사용하기 위해 링커 플래그에 -ObjC를 설정하지만 그대로 Parse.com의 SDK를 빌드 할 수 없으므로 FacebookSDK를 추가하여이를 피하십시오 (상세).



로그인 화면이 나오면 성공입니다. 로그인의 결과는 PFLogInViewControllerDelegate 로 받을 수 있으므로, 이것을 UserActionListener 에 흘리면 C++ 측에서 처리할 수 있습니다.

UserParse.m
- (void)logInViewController:(PFLogInViewController *)logInController didLogInUser:(PFUser *)user
{
    [UserWrapper onActionResult:self withRet:kLoginSucceed withMsg:user.username];
}

- (void)logInViewController:(PFLogInViewController *)logInController didFailToLogInWithError:(NSError *)error
{
    [UserWrapper onActionResult:self withRet:kLoginFailed withMsg:[error localizedDescription]];
}

- (void)logInViewControllerDidCancelLogIn:(PFLogInViewController *)logInController
{
    [UserWrapper onActionResult:self withRet:kLoginFailed withMsg:@"cancel"];
}

AppDelegate.cpp
class ParseListener : public UserActionListener
{
    void onActionResult(ProtocolUser* pPlugin, UserActionResultCode code, const char* msg)
    {
        if (code == UserActionResultCode::kLoginSucceed) {
            log("parse login succeed: %s", msg);
        }
    }
};
static ParseListener s_parseListener;

링크


  • Parse
  • [MBaaS] Parse로 간단 모바일 백엔드 구축 – 【자세히 개요】
  • Parse for iOS: Errors when trying to run the app
  • 좋은 웹페이지 즐겨찾기