iOS의 GameCenter를 내어플에 붙여보자

Similar documents
iOS4_13

05-06( )_¾ÆÀÌÆù_ÃÖÁ¾

JUNIT 실습및발표

Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint - 2-Objective-C 기초

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

유니티 변수-함수.key

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

2ndWeek_Introduction to iPhone OS.key

PowerPoint Template

오버라이딩 (Overriding)

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

iphone 개발자의 SQLite 다루기 개발 Xcode Version : 4.5 작성 서경덕 환경 시뮬레이터 : iphone Simulator 6.0 일시 2013 년 1 월 3 일 시나리오 1. FireFox의플러그인을통해 SQLite파일을맊든다. 2. 어플에서이

PowerPoint Presentation

Tad_가이드라인

Microsoft PowerPoint - 4-UI 애플리케이션

슬라이드 1

View Licenses and Services (customer)

JAVA PROGRAMMING 실습 08.다형성

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

System Recovery 사용자 매뉴얼

Spring Boot/JDBC JdbcTemplate/CRUD 예제

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

OSP Stage 2040 <Plan & Elaboration> 유아를위한주제별영어학습놀이프로그램 T 김도희 박수민 + 김태현 1

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

ISP and CodeVisionAVR C Compiler.hwp

4S 1차년도 평가 발표자료

게임 기획서 표준양식 연구보고서

PowerPoint 프레젠테이션

01장

슬라이드 1

슬라이드 1

Ver 1.0 마감하루전 Category Partitioning Testing Tool Project Team T1 Date Team Information 김강욱 김진욱 김동권

Microsoft Word - Armjtag_문서1.doc

Microsoft PowerPoint - 07-Data Manipulation.pptx

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

슬라이드 1

Contents. Phase Revise Plan --- Phase Synchronize Artifacts --- Phase 2130 Analyze Activity2131. Define Essential Use Cases --- Activity21

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

Microsoft PowerPoint - CSharp-10-예외처리

1

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

PowerPoint Presentation

윈도우시스템프로그래밍

adfasdfasfdasfasfadf

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

PowerPoint 프레젠테이션

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

자바 웹 프로그래밍

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 05. 객체의 활용

Convenience Timetable Design

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft Word - 문필주.doc

PowerPoint Template

17장 클래스와 메소드

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Software Modeling < < OOAD Stage 김정태 최정명 이낙원 송준현

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

Microsoft Word - Modelsim_QuartusII타이밍시뮬레이션.doc

제11장 프로세스와 쓰레드

Contents Activity Define Real s Activity Define Reports UI, and Storyboards Activity Refine System Architecture Activity Defin

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

K&R2 Reference Manual 번역본

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

(......).hwp

PowerPoint 프레젠테이션

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Install stm32cubemx and st-link utility

Modern Javascript

Windows Live Hotmail Custom Domains Korea

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Office 365 사용자 가이드

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

(Xcode4.2 의 Choose a template for your new project 화면 ) 2) 라이브러리패널이조금바뀌었습니다. Stepper, Gesture Recognizer 가추가되었습니다. 외형이조금바뀌었지만, 책의내용은그대로사용할수있으므로문제없습니다.


IAP-Guide

Studuino소프트웨어 설치

chap 5: Trees

MVVM 패턴의 이해

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

금오공대 컴퓨터공학전공 강의자료

MF5900 Series MF Driver Installation Guide

제8장 자바 GUI 프로그래밍 II

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

Transcription:

http://lomohome.com/357 mokorean@gmail.com 어플에 GameCenter 를붙이자! (+ 겜센터스타일의알림창 Notification 도붙이자!) - 개인적인용도로요약한글이라글에서는경어체를사용하지않습니다. 양해부탁드립니다. - 회사에서진행하고있는프로젝트와관련이있어과도한모자이크가있습니다. 양해부탁드립니다. ios 4.1 부터지원하기시작한 Apple 의 GameCenter 를내어플에붙여보는작업을해보자. GameCenter 의가이드가잘되어있으니전체적인개발방법은가이드를참고해보고이번포스팅에서는속성으로필요한부분만정리해서올려본다. 간단히 GameCenter 는지원하는어플의세계랭킹, 도전목표, 같이게임을하는친구목록등을지원하고또한 Auto-Match ( 대전상대매치 ), 음성채팅같은 API 도제공된다. ( 이전에 Apple 이지원하기전에는 OpenFeint 등이유명한솔루션이었다 ) - 참고 : Apple 의 GameCenter Developer guide http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/gamekit_guide/ GameCenterOverview/GameCenterOverview.html 1. 사전작업먼저어플이 itunes connect 에등록이되어있어야한다. (https://itunesconnect.apple.com) 개발자계정을입력후로그인하면 Manage Your Applications 라는메뉴를누른다. 그다음화면에서 GameCenter 를적용할어플을클릭한다.

그다음 Manage Game Center 를눌러서게임센터관리로들어간다. 여기서 Game Center 를 Enable 시켜준다. 이미테스트용도로 Enable 시켰기때문에화면에서는 Disable 로표시된다. Leaderboard 는간단히말해점수판이다. 전세계사용자들과나자신의점수를비교해볼수도있고 GameCenter 에친구들이같은어플 ( 게임 ) 을사용한다면친구들간의순위도제공된다. 먼저점수판을하나셋팅해본다. Edit 를누른뒤 Add Leaderboard 버튼으로점수판을하나생성한다. 테스트용도이므로 Single Leaderboard 로생성을했다. Leaderboard Reference Name 은내가알아볼만한이름으로셋팅하면되고 Leaderboard ID 가중요한데프로그램에서참조되는값이므로유니크한이름으로셋팅해야된다. Sort Order 는오름차순, 내림차순정렬등을선택하고 Add Language 버튼으로언어별표시되는이름뒤에붙는점수표시법등을설정할수있다.

그다음다시 Manage 화면으로와서이번엔게임목표 (Achievements) 를설정해본다. 목표는어플당 1000 점한도내에서목표 1 개당 1~100 점이내로여러개를설정할수있다. Add New Achievement 버튼으로새로운목표를하나만들어본다. Achievement Reference Name 은 itunes Connect 에서관리하게편하게알아볼만한이름으로설정한다. Achievement ID 는마찬가지로프로그램에서참조할이름을적어준다. Hidden 은공개된목표인지, 숨겨진목표인지설정하고 Point Value 로목표를완수했을때주어지는점수를셋팅한다. 100 점까지셋팅이가능하다. Add Language 버튼으로언어별로표시될이름, 목표완수전에표시될설명, 완수후에표시될설명, 그리고목표에해당하는아이콘이미지를넣어준다. 테스트로몇개만들어보고이상으로 itunes Connect 사이트에서설정할사전작업은완료되었다.

2. 코드적용 2.1. 라이브러리추가 xcode 를열고즐거운코딩작업을시작한다. 먼저 GameKit 라이브러리가프로젝트에포함이되어야한다. xcode 4 로넘어오면서이게어디있나한참찾았는데 xcode 4 에서는다음에서필요한라이브러리를포함시킬수있다. 프로젝트파일을선택하고 Targets 에서선택하고 Build Phases 를누른후 Link Binary with Libraries 에서 GameKit.framework 를추가해준다. 그리고게임센터에서점수를기록하거나목표를달성했을때게임센터스타일의노티를붙여주기위해 typeoneerror 블로그의 GKAchievementNotification 소스를추가로붙이기위해서, 다운받은 ( 링크는아래에... 그리고블로그에도첨부파일로 ) 소스와이미지들을프로젝트에추가해준다. ( 여기에선 typeoneerror-gkachievementnotification-8a90404.zip 사용 ) http://www.typeoneerror.com/articles/post/game-center-achievement-notification 겜센터스타일의노티가기본적으로뜰때풀사이즈의어플을기준으로했기때문에내가작업하고있는어플에서보면노티가나오다가짤려보인다. 문제는 20 픽셀을잡고있는스테이더스바때문인데스테이더스바의길이만큼더해서노티가더내려오도록수정을했다. 다음수정은상단에스테이더스바가있는어플일때만해주면된다. ( 자신의어플에맞게 Customize 해서쓰도록하자 ) 다운받은소스의 GKAchievementNotification.h 의파일을보면다음과같은정의구문이있는데기본 10 픽셀만큼내려오는걸 30 필셀만큼내려오도록수정한다. #define kgkachievementframeend 여기서 10.0f 를 #define kgkachievementframeend 이렇게 30.0f 로. (20픽셀만큼더함 ) CGRectMake(18.0f, 10.0f, 284.0f, 52.0f); CGRectMake(18.0f, 30.0f, 284.0f, 52.0f);

2.2. 게임센터접속메소드구현 게임센터를접속시켜야하는데 MainView 쪽에작업해도되지만나는어플안에서마구가져다쓸수있는인스턴스클래스에접속, 점수보내는등의메소드를구현해놨다. 인스턴스클래스 AppUtils.h #import <GameKit/GameKit.h> #import "GKAchievementHandler.h" // 이건노티를위해서임포트 @interface AppUtils : NSObject {! ~~~~ ~~~~ /////////////////Geunwon,Mo : GameCenter 추가 start ///////////// + (BOOL) isgamecenteravailable ; // 게임센터가사용가능하지알아보는메소드 + (void) connectgamecenter; // 게임센터에접속하는메소드 +(void) sendscoretogamecenter:(int)_score; // 게임센터서버에점수보내는메소드 + (void) sendachievementwithidentifier: (NSString*) identifier percentcomplete: (float) percent; // 게임센터서버에목표달성보내는메소드 + (void) resetachievements; // 테스트용으로목표달성도를리셋하는메소드 /////////////////Geunwon,Mo : GameCenter 추가 end ///////////// @end AppUtils.m ~~~( 생략 ) /////////////////Geunwon,Mo : GameCenter 추가 start ///////////// //GameCenter 사용가능단말인지확인 + (BOOL) isgamecenteravailable { // check for presence of GKLocalPlayer API Class gcclass = (NSClassFromString(@"GKLocalPlayer")); // check if the device is running ios 4.1 or later NSString *reqsysver = @"4.1"; NSString *currsysver = [[UIDevice currentdevice] systemversion]; BOOL osversionsupported = ([currsysver compare:reqsysver options:nsnumericsearch]!=nsorderedascending); return (gcclass && osversionsupported); //GameCenter 로그인 + (void) connectgamecenter{ NSLog(@"connect... to gamecenter"); if([gklocalplayer localplayer].authenticated == NO) { // 게임센터로그인이아직일때 [[GKLocalPlayer localplayer] authenticatewithcompletionhandler:^(nserror* error){ if(error == NULL){ NSLog(@" 게임센터로그인성공 ~"); else { NSLog(@" 게임센터로그인에러. 별다른처리는하지않는다."); ]; - 계속

// 게임센터서버로점수를보낸다. +(void) sendscoretogamecenter:(int)_score{ GKScore* score = [[[GKScore alloc] initwithcategory:@"kpoint"]autorelease]; // 위에서 kpoint 가게임센터에서설정한 Leaderboard ID score.value = _score; // 아래는겜센터스타일의노티를보여준다. 첫번째가타이틀, 두번째가표시할메세지 [[GKAchievementHandler defaulthandler] notifyachievementtitle:@"nbank Point!" andmessage:[nsstring stringwithformat:@"nbank Point %d 점을기록하셨습니다.",_score]]; // 실지로게임센터서버에점수를보낸다. [score reportscorewithcompletionhandler:^(nserror* error){ if(error!= NULL){ // Retain the score object and try again later (not shown). ]; // 게임센터서버로목표달성도를보낸다. 첫번째가목표 ID, 두번째가달성도. 100% 면목표달성임 + (void) sendachievementwithidentifier: (NSString*) identifier percentcomplete: (float) percent{ NSLog(@"-- 겜센터 : sendachievementwithidentifier %@, %f",identifier,percent); GKAchievement *achievement = [[[GKAchievement alloc] initwithidentifier: identifier] autorelease]; if (achievement) { achievement.percentcomplete = percent; [achievement reportachievementwithcompletionhandler:^(nserror *error) { if (error!= nil) { ]; // 이아래는게임센터로부터목표달성이등록되면실행되는리스너 (?) [GKAchievementDescription loadachievementdescriptionswithcompletionhandler: ^(NSArray *descriptions, NSError *error) { if (error!= nil){ // process the errors if (descriptions!= nil){ // 목표달성이등록되면노티로알려준다. for (GKAchievementDescription *achievementdescription in descriptions){ if ([[achievementdescription identifier] isequaltostring:identifier]){ // 보낸 ID와일치하면달성도에따라노티를보여준다. if (percent >= 100.0f) { // 100% 면달성완료노티를... [[GKAchievementHandler defaulthandler] notifyachievement:achievementdescription]; else { // 100% 가안되면진행도를노티. [[GKAchievementHandler defaulthandler] notifyachievementtitle:achievementdescription.title andmessage:[nsstring stringwithformat:@"%.0f%% 완료하셨습니다.",percent]]; ]; - 계속

// 테스트할때현재까지모든진행도를리셋하는메소드. + (void) resetachievements { // Clear all progress saved on Game Center [GKAchievement resetachievementswithcompletionhandler:^(nserror *error) { if (error!= nil){ // handle errors ]; /////////////////Geunwon,Mo : GameCenter 추가 end ///////////// 이제어플을실행하고메인뷰컨트롤러의 viewdidload 메소드에게임센터접속을코딩한다. 이프로그램에서는 MainMenuViewController.m 에다가코딩해놨다. #import "AppUtils.h" ~~~~~( 생략 ) - (void)viewdidload { ~~~~~( 생략 ) /////////////////Geunwon,Mo : GameCenter 추가 start ///////////// //AppUtils 가인스턴스메소드이기때문에걍쓴다 if ([AppUtils isgamecenteravailable]) { // 게임센터가가능한단말이면... [AppUtils connectgamecenter]; // 게임센터접속 ~ /////////////////Geunwon,Mo : GameCenter 추가 end ///////////// ~~~~~( 생략 ) 이제게임센터에접속하고, 점수를보여줄준비는끝났다. 프로그램을실행해보면다음과같이게임센터에접속하는모습을볼수있다.

2.3. 게임센터로점수와목표달성도를보내보자 이제자신의프로그램플로우에따라게임센터서버로점수와목표달성도를보내보는메소드를구현해보자. 사실보내는메소드는위에구현해놨기때문에테스트메소드로사용법만을적어본다. 프로그램에서적당한위치에 ( 실제로게임센터로데이터를보내야하는클래스에서 ) 테스트메소드들을만들었다. // 테스트메소드들 - (IBAction)test1:(id)sender { // 이렇게보내면 er10 이라는 ID 를가지는목표달성도가 25% 가찍히게된다. [AppUtils sendachievementwithidentifier:@"er10" percentcomplete:25.0f]; - (IBAction)test2:(id)sender { // 이렇게보내면 er10 이라는 ID 를가지는목표달성도가완료되게된다. [AppUtils sendachievementwithidentifier:@"er10" percentcomplete:100.0f]; - (IBAction)test3:(id)sender { // 이렇게보내면 sit 이라는 ID 를가지는목표달성도가완료되게된다. [AppUtils sendachievementwithidentifier:@"sit" percentcomplete:100.0f]; - (IBAction)testpoint:(id)sender { int r = rand() % 1000; // 이렇게보내면점수판에 1000 사이의정수가랜덤으로기록되게된다. [AppUtils sendscoretogamecenter:r]; // 이렇게보내면목표달성도가리셋되게된다. [AppUtils resetachievements];

2.4. 점수판도띄워보고목표달성판도띄워보자! 메뉴또는 About 화면등.. 원하는위치에버튼을만들고누르면게임센터의점수판과목표달성판이나오도록해보자. 나는 AppInfoViewController 라는클래스에코딩을해놨다. 포인트순위표, 목표달성이란버튼을만들고각각 Touch Up Inside 이벤트에 openleaderbd 라는점수판을띄우는메소드와 openarchivementbd 라는목표달성판을띄우는메소드를만들었다. (Archivement 는오타인데만들고나서나중에수정하기귀찮아서그냥사용 -_-) AppInfoViewController.h #import <GameKit/GameKit.h> @interface AppInfoViewController : UIViewController <GKLeaderboardViewControllerDelegate, GKAchievementViewControllerDelegate>{ // 점수판, 목표달성판을띄우는뷰컨트롤러딜리게이트구현 /////////////////Geunwon,Mo : GameCenter 추가 start - (IBAction)openLeaderBD:(id)sender; // 점수판을띄운다 - (IBAction)openArchivementBD:(id)sender; // 목표달성판을띄운다 - (void) showleaderboard; // 실제로점수판을띄우는부분구현메소드 - (void) leaderboardviewcontrollerdidfinish:(gkleaderboardviewcontroller *) viewcontroller; // 점수판이닫힐때호출되는메소드 - (void) showarchboard; // 목표달성판을띄우는부분구현메소드 - (void)achievementviewcontrollerdidfinish:(gkachievementviewcontroller *) viewcontroller; // 목표달성판이닫힐때호출되는메소드 /////////////////Geunwon,Mo : GameCenter 추가 end @end

AppInfoViewController.m ~~~( 생략 ) /////////////////Geunwon,Mo : GameCenter 추가 start ///////////// ///////////////// 점수판 // 점수판버튼이눌리면호출된다. - (IBAction)openLeaderBD:(id)sender{ NSLog(@"open leader board"); [self showleaderboard]; // 실행 ~ - (void) showleaderboard { GKLeaderboardViewController *leaderboardcontroller = [[[GKLeaderboardViewController alloc] init]autorelease]; if (leaderboardcontroller!= nil) { // 레더보드델리게이트는나임 leaderboardcontroller.leaderboarddelegate = self; // 레더보드를현재뷰에모달로띄운다. [self presentmodalviewcontroller:leaderboardcontroller animated: YES]; // 레더보드델리게이트를구현한부분. 닫힐때호출된다. - (void) leaderboardviewcontrollerdidfinish:(gkleaderboardviewcontroller *) viewcontroller { [self dismissmodalviewcontrolleranimated:yes]; // 점수판모달뷰를내림 // 추가적으로자신의어플에맞게구현해야할것이있으면한다. ///////////////// 목표달성. ( 점수판구현과방법은똑같음 ) // 목표달성판버튼이눌리면호출된다. - (IBAction)openArchivementBD:(id)sender { NSLog(@"open archivement board"); [self showarchboard]; - (void) showarchboard { GKAchievementViewController *archivecontroller = [[[GKAchievementViewController alloc] init] autorelease]; if (archivecontroller!= nil) { archivecontroller.achievementdelegate = self; [self presentmodalviewcontroller:archivecontroller animated: YES]; - (void)achievementviewcontrollerdidfinish:(gkachievementviewcontroller *) viewcontroller{ [self dismissmodalviewcontrolleranimated:yes]; ////////////////////Geunwon,Mo : GameCenter 추가끝 ////////////// 따로주의해야할점은점수판과목표달성판은 UIView 위에띄워주게되어있는데지금작업한어플은 UIView 에서도는어플이라상관없지만 cocos2d 나기타 opengles 등을이용한어플이라면 UIView 를하나띄워주고그뷰의모달로띄워주어야화면에표시가될것이다. ( 해보지는않았음 -_- 구글링추천 )

이제 누르면 다음과 같이 점수판과 목표달성판이 이쁘게 뜬다. 끗. 2011.4.19 모근원 (Geunwon,Mo) mokorean@gmail.com twitter : @mokorean http://lomohome.com