모든 문서(일반 문서, 분류 문서, 파일(이미지, 사운드 등) 문서)는 분류가 달려 있어야 합니다.
--Administrator (토론)
Hub/docs/android/getting started
컴투스위키
Hive | >> | >> |
플랫폼별 환경설정 가이드 Hive Android 환경설정 |
>> |
하이브 모듈 API 레퍼런스 |
>> |
하이브 기능 활용 가이드 |
목차 |
개요
- 이 문서는 하이브(Hive) Android 모듈을 게임에 붙이는 과정을 안내합니다.
필수 적용 사항
적용 준비
- 앱 아이디 및 게임 인덱스 발급
- Hive 모듈을 적용하는 모든 게임은 앱 아이디(com.com2us / com.gamevil 같은 스트링 형태의 패키지 이름) 및 게임 인덱스(4자리 정수 형태의 숫자 값)를 가지고 있어야 합니다. 이 정보들은 해당 게임을 식별하는 정보로 사용됩니다. 앱 아이디 및 게임 인덱스 발급은 사업지원팀에 요청하시면 됩니다.
- facebook 및 Google+ 등록
- Hive 모듈은 facebook, Google+, Sina weibo 계정을 통한 Hive 가입 및 로그인이 지원됩니다(단, Sina Weibo는 현재 중국 IP로 접속하는 경우에만 로그인 화면에서 버튼이 노출됩니다). 서버 설정에 따라 로그인 화면에서 해당 SNS 아이콘이 노출되며, Hive 모듈에서 지원하는 소셜 기능(공유, 메시지 등)을 사용할 수 있습니다.
- 이들 기능을 사용하고자 하는 경우에는, 해당 소셜 서비스 앱 등록을 해야 합니다(facebook, Google+). 이 부분도 사업지원팀에 요청하시면 됩니다.
Hive 라이브러리 프로젝트(Peppermint_dist) 설정
- Peppermint_dist 프로젝트 적용
- 프로젝트를 이클립스에서 임포트합니다. (Hive 신규적용게임은 꼭 2.6.x 이상 버전을 적용하시기 바랍니다.)
- 게임 프로젝트에서 Peppermint_dist 를 Library Project로 설정합니다.
- Package Explorer/Project Explorer창에서 게임 프로젝트를 선택한 뒤 우 클릭한 메뉴에서 'Properties'를 선택합니다.
- 좌측 메뉴에서 Android 탭을 선택합니다. 우측 아래 Library 영역에서 'Add'버튼을 선택합니다.
- Peppermint_dist 프로젝트를 선택하고 'OK'버튼을 누릅니다.
- AndroidManifest.xml 수정(게임 프로젝트)
- AndroidManifest.xml 파일에는 아래 내용들이 추가됩니다(하단의 샘플 코드 참고).
- SNS 라이브러리(facebook, Google + 등) 관련 설정
- 퍼미션 추가
- 하드웨어 가속 설정
- AndroidManifest.xml 파일에는 아래 내용들이 추가됩니다(하단의 샘플 코드 참고).
- Hive에서 사용하는 퍼미션들에 대한 설명 및 어느 동작에서 해당 퍼미션을 요구하는지에 대해서는 Hub Permission 를 참조하십시오.
- 참고로, UPDATE_DEVICE_STATS permission을 추가할 경우, 이클립스에서 빌드 시에 "permission is only granted to system apps"오류가 발생하기도 합니다. 이는 기본적으로 안드로이드 프레임워크 상의 오류로 보이는데, 프로젝트를 클린한 뒤 다시 빌드하면 정상적으로 빌드됩니다.
- Hive를 적용할 때는 렌더링 방식을 반드시 하드웨어 가속 방식으로 설정하셔야 합니다.하드웨어 가속 방식을 사용하지 않으면 고해상도 단말에서 Hive 창을 띄웠을 때 속도가 매우 느려집니다.
- 하드웨어 가속 방식은 <application android:hardwareAccelerated="true" ...>와 같이 application tag에 hardwareAccelerated 속성을 추가해주면 됩니다.
<application ..... android:hardwareAccelerated="true">
.....
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
.....
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
facebook, Google +, Sina Weibo 라이브러리 설정
- 개요
- Hive에서는 facebook, Google +, Sina Weibo 계정을 가지고 있는 사용자라면, 별도의 Hive 가입 절차 없이 SNS 계정을 통해 인증(회원 가입 또는 로그인)을 받을 수 있습니다. SNS계정을 통해 인증된 사용자도 일반 Hive 사용자와 마찬가지로 Hive 서버로부터 동일하게 인증 정보(uid, did, sessionkey)를 발급 받고, 동일하게 게임을 이용할 수 있습니다.
- 다운로드
- Facebook : 플랫폼 클라이언트팀에서 배포하는 facebook SDK를 사용하길 권장합니다. (Hive v2.6.0부터 Facebook SDK v4.18 사용중, Hive v2.6.9부터 Facebook SDK v4.33 사용중)
- 최신버전을 사용하길 권장합니다.(버전 숫자가 높을수록 최신)
- 하이브 svn에서 배포중인 페이스북 SDK는 하이브 서버에서 페이스북 로그인 후에 유저 정보 쿠키를 날리지 않도록 커스터마이징 한 버전입니다. svn을 통해 하이브팀에서 배포하는 SDK를 사용하길 권장합니다.
- Android Peppermint v2.6.7부터 다른 모듈과의 연관성을 확인해야 합니다.
- Android Peppermint v2.6.7 적용 시 동일 시점에 업데이트된 Android 모듈 ModuleManager v2.5.2, ActiveUser v2.8.2, Mercury v2.11.0, Push v3.3.9, InApp v2.14.1을 동시에 업데이트하는 것을 권장합니다. (Offerwall 모듈은 상관 없습니다.)
- Android Peppermint v2.6.7에 추가된 Facebook 4.18_libs_update 프로젝트는 Facebook에서 사용하는 Android Support v4 및 v7 라이브러리를 기존 25.0.0 버전에서 27.1.0 버전으로 업데이트 하였고, 외부 모듈들은 해당 Support 라이브러리 버전에 의존하는 로직을 포함하고 있습니다.
- 각 모듈 패키지에도 Support 라이브러리 27.1.0 버전이 포함되어 있지만 권장하지 않는 버전들과 혼용할 경우 빌드 시 Support 라이브러리 중복 에러가 발생할 수 있어 동시 업데이트를 권장합니다.
- Google+ : 마찬가지로 하이브팀에서 배포하는 google-play-services SDK를 사용하길 권장합니다. (Hive v2.6.0부터 google-play-services SDK v10.0.1 사용중)
- 최신버전을 사용하길 권장합니다.(버전 숫자가 높을수록 최신)
- Facebook : 플랫폼 클라이언트팀에서 배포하는 facebook SDK를 사용하길 권장합니다. (Hive v2.6.0부터 Facebook SDK v4.18 사용중, Hive v2.6.9부터 Facebook SDK v4.33 사용중)
- facebook SDK v4.18 설정
- 1. 이클립스에 facebook SDK 프로젝트를 임포트합니다.
- 2. facebook SDK 임포트 시 facebook library, aapt, appcompat-v7, cardview-v7 프로젝트를 볼 수 있는데 그 중 aapt만 제외하고 3개의 프로젝트를 가져옵니다.
- 3. 그 다음, facebook library 프로젝트를 우클릭하여 속성(Properties) 수행, Android > Library 항목으로 이동하여 facebook library 프로젝트가 appcompat-v7, cardview-v7 프로젝트를 참조하도록 설정합니다.
- 1. 이클립스에 facebook SDK 프로젝트를 임포트합니다.
- 4. Package Explorer/Project Explorer에서 Hive 모듈 프로젝트(Peppermint_dist)를 선택한 다음, 우클릭을 하고 속성(Properties)을 클릭합니다.
- 5. 좌측 패널에서 ‘Android’를 선택후 ‘Library’에서 ‘Add...’ 버튼을 클릭해 facebook SDK(facebook library) 프로젝트를 연결시킵니다.
- 6. Package Explorer에서 게임 프로젝트를 클릭한 뒤, 속성(Properties)을 선택합니다. 프로젝트 속성 창이 열리면, Java Build Path를 선택하고, Order and Export 탭을 클릭합니다. 여기서 Android Private Libraries를 체크해줍니다(만약 이 항목이 없다면 이클립스 ADT버전이 최신이 아닌 것인데, 빌드 후 실행해서 문제가 없으면 이 과정은 생략하셔도 좋습니다).
- 7. 게임 프로젝트의 res/values 디렉토리에 있는 strings.xml 에 facebook 어플리케이션 아이디 값을 추가합니다. 이 아이디는 위에서 사업지원팀을 통해 facebook 앱 등록을 하면서 발급 받은 아이디를 말합니다(여기서 키 값은 정확히 “applicationId”로 해주서야 합니다).
- 4. Package Explorer/Project Explorer에서 Hive 모듈 프로젝트(Peppermint_dist)를 선택한 다음, 우클릭을 하고 속성(Properties)을 클릭합니다.
<resources>
<string name="applicationId">[사업지원팀에서 받은 facebook 아이디]</string>
</resources>
<string name="applicationId">[사업지원팀에서 받은 facebook 아이디]</string>
</resources>
- 8. AndroidManifest.xml은 다음과 같이 설정합니다.
<application ..... android:hardwareAccelerated="true">
.....
<activity android:name="com.facebook.FacebookActivity" />
android:config="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@style/AppTheme"
android:label="@string/app_name" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId" />
</application>
.....
<activity android:name="com.facebook.FacebookActivity" />
android:config="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@style/AppTheme"
android:label="@string/app_name" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId" />
</application>
- facebook SDK v4.33 (혹은 v4.38) 설정
- facebook SDK v4.33, 4.38 모두 동일하게 적용 가능한 방법입니다. 아래 내용을 참고 바랍니다.
- 1. 이클립스에 facebook SDK 프로젝트를 임포트합니다.
- 2. facebook SDK 임포트 시 보이는 10개의 라이브러리 FacebookActivity(facebook-common), facebook, facebook-share, facebook-places, facebook-messenger, facebook-login, facebook-core, facebook-applinks, appcompat-v7, cardview-v7 를 모두 가져옵니다.
- 3. FacebookActivity 프로젝트를 우클릭하여 속성(Properties) 수행, Android > Library 항목으로 이동하여 facebook library 프로젝트가 appcompat-v7, cardview-v7 프로젝트를 참조하도록 설정합니다.
- 4. Package Explorer/Project Explorer에서 Hive 모듈 프로젝트(Peppermint_dist)를 선택한 다음, 우클릭을 하고 속성(Properties)을 클릭합니다.
- 5. 좌측 패널에서 ‘Android’를 선택후 ‘Library’에서 ‘Add...’ 버튼을 클릭해 facebook SDK(FacebookActivity(facebook-common), facebook, facebook-share, facebook-places, facebook-messenger, facebook-login, facebook-core, facebook-applinks) 프로젝트(8개)를 연결시킵니다.
- 4. Package Explorer/Project Explorer에서 Hive 모듈 프로젝트(Peppermint_dist)를 선택한 다음, 우클릭을 하고 속성(Properties)을 클릭합니다.
- 6. Package Explorer에서 게임 프로젝트를 클릭한 뒤, 속성(Properties)을 선택합니다. 프로젝트 속성 창이 열리면, Java Build Path를 선택하고, Order and Export 탭을 클릭합니다. 여기서 Android Private Libraries를 체크해줍니다(만약 이 항목이 없다면 이클립스 ADT버전이 최신이 아닌 것인데, 빌드 후 실행해서 문제가 없으면 이 과정은 생략하셔도 좋습니다).
- 7. 게임 프로젝트의 res/values 디렉토리에 있는 strings.xml 에 facebook 어플리케이션 아이디 값을 추가합니다. 이 아이디는 위에서 사업지원팀을 통해 facebook 앱 등록을 하면서 발급 받은 아이디를 말합니다(여기서 키 값은 정확히 “applicationId”로 해주서야 합니다).
- 6. Package Explorer에서 게임 프로젝트를 클릭한 뒤, 속성(Properties)을 선택합니다. 프로젝트 속성 창이 열리면, Java Build Path를 선택하고, Order and Export 탭을 클릭합니다. 여기서 Android Private Libraries를 체크해줍니다(만약 이 항목이 없다면 이클립스 ADT버전이 최신이 아닌 것인데, 빌드 후 실행해서 문제가 없으면 이 과정은 생략하셔도 좋습니다).
<resources>
<string name="applicationId">[사업지원팀에서 받은 facebook 아이디]</string>
</resources>
<string name="applicationId">[사업지원팀에서 받은 facebook 아이디]</string>
</resources>
- 8. AndroidManifest.xml은 다음과 같이 설정합니다.
<application ..... android:hardwareAccelerated="true">
.....
<activity android:name="com.facebook.FacebookActivity" />
android:config="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@style/AppTheme"
android:label="@string/app_name" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId" />
</application>
.....
<activity android:name="com.facebook.FacebookActivity" />
android:config="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@style/AppTheme"
android:label="@string/app_name" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/applicationId" />
</application>
- 9. facebook-core 라이브러리의 AndroidManifest.xml에서 applicationId를 설정합니다.
이클립스에서 빌드하는 경우 AndroidManifest.xml에 포함된 ${applicationId} 라는 구문은 스스로 빌드되지 못합니다. 이부분에 packageName을 직접넣어 대체합니다.
반면, Android Studio에서 빌드하는 경우 ${applicationId} 구문에 빌드시 packageName이 자동으로 대체됩니다.
- 9. facebook-core 라이브러리의 AndroidManifest.xml에서 applicationId를 설정합니다.
- Facebook SDK v4.39 설정
- Facebook SDK v4.39 설정 방법은 기존 v4.33, v4.38과 유사합니다.
- 단, 2가지 변경 주의사항이 있으니 아래 (1), (2) 항목을 체크해주세요.
(1) import하는 프로젝트 수가 변경되었습니다.
- 이제 Facebook SDK는 총 4개의 프로젝트만 import 합니다.
- (facebook-common(FacebookActivity), facebook-share, facebook-core, facebook-login)
(2) Android Support v4 라이브러리는 Facebook-core 라이브러리가 갖고 있습니다.
- 기존는 facebook-release 프로젝트가 /libs 경로에 Android Support v4 라이브러리들을 갖고 있었습니다.
- v4.39.0 부터는 facebook-core 라이브러리가 Android Support v4 라이브러리들을 갖고 있습니다.
각 라이브러리가 참고해야하는 하위 프로젝트는 기존 v4.33, v4.38 버전과 동일합니다.
- Google Play Services v11.2.0(11200000) 라이브러리 설정
- 1. 이클립스에 Google Play Services 라이브러리(프로젝트)를 임포트합니다.
- 2. Google Play Services 라이브러리 임포트 시 총 9개의 프로젝트를 가져옵니다. (auth, auth-api-phone, auth-base, base, basement, drive, games, tasks, plus)
- 3. 그 다음, 각 Google Play Services 라이브러리가 필요로하는 참조 프로젝트를 프로젝트 Properties에 설정합니다.
- (아래 9개의 프로젝트 Properties 설정을 확인)
- Google + / Google PGS 설정
- Google + SDK 프로젝트(google-play-services_lib_버전정보)를 임포트합니다.
- 위 “facebook SDK 설정"과 동일합니다
- 위 “facebook SDK 설정"과 동일합니다
- 위 “facebook SDK 설정"과 동일합니다
- 게임 프로젝트 AndroidManifest.xml 에 다음 퍼미션 및 메타 데이터를 추가합니다. 메타 데이터는 <application> 태그 안쪽에 위치시키셔야 합니다(샘플 프로젝트 참조).
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="@string/app_id" />
- 게임 프로젝트의 res/values 디렉토리에 있는 strings.xml 에 Google+ 앱 아이디 값을 추가합니다. 이 앱아이디는 위에서 사업지원팀을 통해 Google+ 앱 등록을 하면서 발급 받은 ClientID의 맨 앞 정수 12자리(혹은 12자리이상) 값입니다. (여기서 키 값은 정확히 임의로 변경가능하지만, 반드시 매니페스트파일에 등록하는 메타파일의 value 값과 맞춰야 합니다).
<string name="app_id">000000000000</string>
- 키해시, SHA1 지문, md5 서명 전달
- facebook, Google 개발자 사이트에 APK Signing에 사용된 인증서 정보(키해시, SHA1 지문, md5 서명)를 등록해야만 정상적으로 facebook, Google + API를 사용할 수 있습니다.
- 프로젝트를 빌드하는 데 사용하는 인증서의 키해시, SHA1 지문, md5 정보를 확인하여 사업지원팀에 전달해주셔야 합니다. 디버깅 과정의 편의를 위해 디버그용 인증서 및 배포용 인증서의 정보를 모두 전달하시길 권장합니다. 예컨대 배포용 인증서의 키해시만 전달할 경우, 디버그용 인증서로 빌드한 apk파일(이클립스 상에서 Run -> Run하는 경우)에서는 SNS 계정을 통한 로그인이 동작하지 않습니다.
- 사내 TF의 경우, 디버그용 인증서의 정보만 확인하시면 됩니다. Certificate (Android) 페이지에 나와 있는 Com2usGames 및 기타 공용으로 사용하는 4종의 인증서를 배포용 인증서로 사용하시면, 이 인증서들의 인증서 정보는 별도로 확인하지 않으셔도 됩니다. 예컨대 사업지원팀에 "Com2usGames 인증서"로 등록해 달라고만 말씀하시면 됩니다.
- 외부 개발사의 경우, 디버그용 인증서 및 배포용 인증서의 정보를 확인하여 사업지원팀에 전달해주시기 바랍니다.
- 인증서 정보(키해시, SHA1 지문, md5)를 확인하는 방법은 파일:안드로이드 허브(hub) - 키해시, sha1 지문, md5 서명 안내 가이드.pdf를 참고 바랍니다.
QQ 라이브러리 설정
- Android Peppermint v2.7.0부터 클라이언트 사이드 QQ 로그인을 사용할 수 있습니다.
- 텐센트 QQ 로그인 정책 대응으로 인한 QQ 로그인 방식 변경(로그인 방식을 기존 서버(웹) 로그인 방식에서 클라이언트 로그인으로 변경) 서버패치(2018/11/15)로 인하여, Peppermint v2.7.0 이하를 적용할 경우, 아래 대상게임은 QQ 로그인 버튼이 비활성화되어 노출되고 있습니다.
- Peppermint v2.7.0 이상을 적용할 경우 자동으로 QQ 로그인 버튼이 활성화 됩니다.
- 2018.11.15 시점 참고사항
- 2018.11.15 시점 QQ 로그인 버튼 비활성화 된 게임목록 : 서머너즈워, 낚시의 신, 골프스타, 사커스피리츠, 원더택틱스, 타이니팜, 라이트:빛의원정대, 소울시커
- Peppermint v2.7.0 업데이트 적용 대상 게임 : 서머너즈워, 낚시의 신, 골프스타, 사커스피리츠, 원더택틱스
- 참고 사항
- 타이니팜과 라이트:빛의원정대의 경우 중국법인에서 서비스 허가를 받지 않은 상황이라 QQ 로그인 적용 대상에서 제외되었습니다.
- 소울시커의 경우 19년 1월 종료 예정이라 추가 대응을 하지 않았고, 멤버십 전환 유도만 진행됩니다.
- 제외된 게임의 경우 AppId를 발급받지 않았기 때문에 QQ 로그인 버튼 클릭 시 동작을 하지 않습니다.
- QQ 라이브러리 적용 방법
- QQ 콘솔에 앱을 등록하였을 경우 QQ 앱아이디를 발급받아 QQ 라이브러리를 통한 로그인 기능을 사용할 수 있습니다.
- QQ 콘솔에 앱 등록과 관련된 문의는 GCP 플랫폼 클라이언트팀으로 문의바랍니다. (18.11.15 적용 대상 게임은 별도로 앱 등록 및 앱아이디 발급이 필요 없습니다. GCP 플랫폼 클라이언트팀으로 문의바랍니다.)
- 적용 사항 1 : AndroidManifest.xml 설정
- <application> 태그 이하에 아래 내용을 추가
<application …>
// ...
<!-- QQ Login -->
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent123456789" /> <!-- tencent 텍스트 뒤에 QQ AppId를 직접 추가 -->
</intent-filter>
</activity>
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
// …
<application …>
// ...
<!-- QQ Login -->
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent123456789" /> <!-- tencent 텍스트 뒤에 QQ AppId를 직접 추가 -->
</intent-filter>
</activity>
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
// …
<application …>
- 적용 사항 2 : /res/strings.xml 설정
- QQ 콘솔에서 발급받은 QQ AppId를 추가
<?xml version="1.0" encoding="utf-8"?>
<resources>
// …
<string name="qq_appid">123456789</string>
// ...
</resources>
<resources>
// …
<string name="qq_appid">123456789</string>
// ...
</resources>
- 적용 사항 3 : QQ 라이브러리 파일 추가
- open_sdk_r6019_lite.jar 라이브러리를 프로젝트에 추가
- 주의! QQ 라이브러리 미포함 시 Facebook, Google 등 소셜 로그인 시(로그인 버튼 터치 시) 크래시가 발생할 수 있습니다. (소셜 서비스 체크 로직에서 QQ 라이브러리 포함여부를 확인하고 있습니다.) 때문에 꼭 Android Peppermint v2.7.0사용 시 open_sdk_r6019_lite.jar를 프로젝트에 추가 바랍니다.
- QQ 로그인을 사용하지 않는 경우 QQ 라이브러리는 포함하지만 'AndroidManifest.xml 설정', 'strings.xml 설정', 'QQ 앱 설치'는 제외 되어도 무방합니다.
- 적용 사항 4 : QQ 앱 설치 여부
- OS에 따라 QQ에서 제공하는 로그인 서비스 동작 차이가 있으며 아래 상황에 따라 QQ 앱 설치 여부가 충족되어야 합니다.
- Android의 경우 QQ 앱을 필수로 설치해야 QQ 로그인이 가능 (필수) (구글 플레이스토어 QQ앱 다운로드 링크 : https://play.google.com/store/apps/details?id=com.tencent.mobileqq)
- iOS의 경우 QQ 앱을 설치하지 않아도 QQ 로그인이 가능 (선택)
- OS에 따라 QQ에서 제공하는 로그인 서비스 동작 차이가 있으며 아래 상황에 따라 QQ 앱 설치 여부가 충족되어야 합니다.
Huawei 라이브러리 설정
- Peppermint v2.9.0+에서 Huawei Account 사용 시
- libs 폴더에 peppermint-2.9.x.aar 파일과 Peppermint_Social_Plugin_Huawei-release-2.9.x.aar 라이브러리 파일을 추가
- Peppermint_Social_Plugin_Huawei-release-2.9.x.aar 파일 위치는 Peppermint/Android/external 폴더에서 확인 가능
- 프로젝트 폴더에 파일 추가
- Project 폴더내 build.gradle에 아래 내용 추가allprojects {
repositories {
//...
maven {url 'http://developer.huawei.com/repo/'} // huawei
}
}buildscript {
repositories {
//...
maven {url 'http://developer.huawei.com/repo/'} // huawei
}
dependencies {
//...
classpath 'com.huawei.agconnect:agcp:1.2.1.301' // huawei
}
} - app 폴더내 build.gradle에 아래 내용 추가dependencies {
//...
implementation 'com.huawei.hms:hwid:4.0.1.300' // huawei account
}apply plugin: 'com.huawei.agconnect' // huawei - Huawei 개발자 사이트 참고
- 주의사항
- Huawei 인증 및 빌링을 사용하기 위해서는 minSDKVersion을 반드시 17 이상으로 설정해야함
- 원활한 테스트를 위해서 HMS(화웨이 모바일 서비스)가 설치된 화웨이 전용 단말에서 사용하는 것을 권장합니다. HMS(화웨이 모바일 서비스)가 미설치된 단말에서 테스트 할 경우 구글 플레이 스토어 또는 기타 apk 다운로드 사이트를 활용하여 HMS(화웨이 모바일 서비스) apk를 설치 후 테스트 바랍니다.android {
//...
defaultConfig {
//...
minSdkVersion 17
}
}
- Proguard 사용 시 아래 설정 추가-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.updatesdk.**{*;}
-keep class com.huawei.hms.**{*;}
- libs 폴더에 peppermint-2.9.x.aar 파일과 Peppermint_Social_Plugin_Huawei-release-2.9.x.aar 라이브러리 파일을 추가
의존 모듈 초기화(Active User)
- Hive 모듈은 액티브 유저(Active User) 모듈에 의존성을 가지고 있습니다. 그래서 액티브 유저 모듈도 게임 프로젝트에 추가해야 하며 액티브 유저 모듈을 초기화해줘야 합니다.
- 액티브 유저(Active User) 모듈의 적용 방법은 해당 모듈 적용 가이드를 참고합니다. Active User 모듈 적용 가이드 (Android)
- 액티브 유저(Active User) 모듈 적용 시 반드시 아래 사항을 주의해야 합니다:
- Hive의 Initialize 메서드는 반드시 액티브 유저의 activeUserStart 메서드가 호출된 이후에 불려야 합니다(Hub2Java 샘플 프로젝트 참조).
- Hive 모듈에서 테스트 서버를 사용하는 경우, 액티브 유저 모듈에서도 테스트 서버를 사용합니다(아래 코드 예시 참조).
- 자세한 코드 예제는 Active User 모듈 적용 가이드 및 Hub2Java 샘플 프로젝트를 참고 바랍니다.
@Override
public void onCreate(Bundle savedInstanceState) {
...
mActiveUser = new ActiveUser(this);
if(PeppermintConstant.USE_HUB_TESTSERVER) {
mActiveUser.setUseTestServer();
}
mActiveUser.start();
}
public void onCreate(Bundle savedInstanceState) {
...
mActiveUser = new ActiveUser(this);
if(PeppermintConstant.USE_HUB_TESTSERVER) {
mActiveUser.setUseTestServer();
}
mActiveUser.start();
}
Hive 모듈 초기화
JNI 미사용 프로젝트
Hive 객체 설정
- 게임 프로젝트 MainActivity의 onCreate() 메서드와 onActivityResult() 메서드에 아래 내용을 추가합니다.
public class MainActivity extends Activity {
private Peppermint mPeppermint;
private ActiveUser mActiveUser;
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
mPeppermint = new Peppermint(this);
mPeppermint.initialize("앱아이디", "게임 인덱스", "사용할 서버(false or true)");
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
mPeppermint.onActivityResult(requestCode, resultCode, data);
}
}
private Peppermint mPeppermint;
private ActiveUser mActiveUser;
...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
mPeppermint = new Peppermint(this);
mPeppermint.initialize("앱아이디", "게임 인덱스", "사용할 서버(false or true)");
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
mPeppermint.onActivityResult(requestCode, resultCode, data);
}
}
JNI 사용 프로젝트(Com2us Wrapper, cocos2D 등)
Android.mk 수정
- 아래 내용을 Android.mk 파일에 추가한다.
#static 라이브러리 선언
include $(CLEAR_VARS)
LOCAL_MODULE := cshub_prebuilt
LOCAL_SRC_FILES := libc2shub2_static.a #../../프로젝트명 등의 상대경로도 입력 가능
include $(PREBUILT_STATIC_LIBRARY)
#헤더파일 경로 추가
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Peppermint_dist/jni/C2SHub2 \
#static 라이브러리 추가
LOCAL_STATIC_LIBRARIES := cshub_prebuilt
include $(CLEAR_VARS)
LOCAL_MODULE := cshub_prebuilt
LOCAL_SRC_FILES := libc2shub2_static.a #../../프로젝트명 등의 상대경로도 입력 가능
include $(PREBUILT_STATIC_LIBRARY)
#헤더파일 경로 추가
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Peppermint_dist/jni/C2SHub2 \
#static 라이브러리 추가
LOCAL_STATIC_LIBRARIES := cshub_prebuilt
- C/C++ Methods에 대한 자세한 내용은 Hive API Reference를 참고 하시면 됩니다.
java부분 수정
- Hive 모듈의 기본 스레드 정책은 Hive API를 호출한 스레드가 콜백 함수도 호출하는 것입니다. 예를 들어, A 스레드가 auth() API를 호출하였을 경우, A 스레드가 closeCallback 함수를 부르도록 되어있습니다.
- MainActivity onCreate() 메서드와 onActivityResult() 메서드에 아래 내용 추가
//관련 클래스 임포트 부분
import com.com2us.peppermint.HubBridge;
import com.com2us.peppermint.HubCallbackListener;
public class MainActivity extends Activity {
...
@Override
public void onCreate(Bundle savedInstanceState) {
//Com2us Wrapper 사용 시
HubBridge.hubInitializeJNI();
HubBridge.HubCallbackSetListener(new HubCallbackListener() {
@Override
public void onCallback(Runnable r) {
wrapperView.queueEvent(r); //wrapperView는 GLSurfaceView를 의미
}
});
//Cocos2D 사용 시
SurfaceViewWrapper viewEx = new SurfaceViewWrapper(getGLSurfaceView()) {
@Override
public void queueEvent(Runnable r) {
if(view instanceof GLSurfaceView){
((GLSurfaceView)view).queueEvent(r);
}
}
};
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
//Com2us Wrapper 사용 시
HubBridge.getPeppermint().onActivityResult(requestCode, resultCode, data);
}
import com.com2us.peppermint.HubBridge;
import com.com2us.peppermint.HubCallbackListener;
public class MainActivity extends Activity {
...
@Override
public void onCreate(Bundle savedInstanceState) {
//Com2us Wrapper 사용 시
HubBridge.hubInitializeJNI();
HubBridge.HubCallbackSetListener(new HubCallbackListener() {
@Override
public void onCallback(Runnable r) {
wrapperView.queueEvent(r); //wrapperView는 GLSurfaceView를 의미
}
});
//Cocos2D 사용 시
SurfaceViewWrapper viewEx = new SurfaceViewWrapper(getGLSurfaceView()) {
@Override
public void queueEvent(Runnable r) {
if(view instanceof GLSurfaceView){
((GLSurfaceView)view).queueEvent(r);
}
}
};
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
//Com2us Wrapper 사용 시
HubBridge.getPeppermint().onActivityResult(requestCode, resultCode, data);
}
URL Scheme 설정
- 하이브 웹페이지 혹은 외부링크를 통해 게임을 실행할 수 있도록 URL Scheme 를 추가 합니다
- 아래 내용은 프로젝트 AndroidManifest.xml 파일의 메인액티비티 안에 포함시킵니다.
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="앱아이디(패키지명)"/>
</intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="앱아이디(패키지명)"/>
</intent-filter>
- 적용 확인 테스트
- URL Scheme 설정이 제대로 되었는지 확인하려면, 빌드가 설치된 단말의 브라우저에서 http://test-hivemanager.com2us.com/api/url_scheme 로 접속하여 앱아이디를 입력해봅니다.
- 앱아이디 입력시 해당 앱이 실행된다면 정상적으로 적용된 것입니다.
- 위 url 링크는 사내망에서만 접근가능합니다.
- 실행후 해당 앱아이디 입력 후 '입력완료' 버튼을 누르면 됩니다.
Facebook SDK 개인정보 보호 설정
- GDPR 정책에 따라 약관 동의 이후에 Facebook SDK 초기화 및 네트워크 통신이 이루어지도록 하려면 아래 내용을 AndroidManifest.xml에 포함시킵니다. (관련 페이스북 페이지 링크)
- Android Peppermint v2.7.9 이상을 적용하고 Android Facebook 5.4.0 이상을 적용하는 경우 꼭 확인이 필요합니다.
- <application> 태그 이하에 포함시킵니다.
<meta-data android:name="com.facebook.sdk.AutoInitEnabled" android:value="false"/>
<meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/>
<meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/>
<meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/>
<meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/>
Android Studio 적용하기 (190625 배포 이후)
1) .jar 라이브러리 추가하기
- 배포된 패키지에 있는 Peppermint-x.x.x.jar 라이브러리를 프로젝트가 추가합니다.
- build.gradle 설정에서 해당 .jar 파일을 implementation하여 빌드되도록 설정합니다.
2) 통합 리소스 및 수정설정 리소스 추가하기
- 리소스 가이드에 있는 통합 리소스와 수정설정 리소스를 프로젝트에 추가합니다. [리소스 추가하기]
3) Peppermint 라이브러리가 필요로하는 외부 라이브러리를 추가하기
- Peppermint 라이브러리는 Android Support 라이브러리 등 외부 라이브러리를 필요로 합니다. 아래 라이브러리를 build.gradle의 dependencies 항목에 추가하여 같이 사용하도록 합니다.
- Google Play Services 라이브러리, Facebook 라이브러리 사용 시 역시 build.gradle의 dependencies 항목에 추가하여 같이 사용하도록 합니다.
- 그 외, 기타 외부 라이브러리를 사용하는 경우 프로젝트 내의 경로를 잘 파악하거나 네트워크 저장소(google, maven 등) 경로를 잘 파악하여 build.gradle에 추가하여 사용합니다.
//... (생략)...
dependencies {
// ...(생략)...
// 위쳇 로그인 라이브러리
implementation files('libs/open_sdk_r6019_lite.jar')
// Android Support 라이브러리
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
// Google Play Services 라이브러리
implementation ‘com.google.android.gms:play-services-auth:17.0.0’ // Peppermint v2.8.2+
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0' // Peppermint v2.8.2+
implementation 'com.google.android.gms:play-services-games:17.0.0' // Peppermint v2.8.2+
// Facebook 라이브러리
implementation 'com.facebook.android:facebook-common:6.5.1' // Peppermint v2.9.1- Facebook Version Update (v5.5.1 -> v6.5.1)
implementation 'com.facebook.android:facebook-core:6.5.1' // Peppermint v2.9.1 - Facebook Version Update (v5.5.1 -> v6.5.1)
implementation 'com.facebook.android:facebook-login:6.5.1' // Peppermint v2.9.1 - Facebook Version Update (v5.5.1 -> v6.5.1)
implementation 'com.facebook.android:facebook-share:6.5.1' // Peppermint v2.9.1 - Facebook Version Update (v5.5.1 -> v6.5.1)
//...(생략)...
}
//...(생략)...
dependencies {
// ...(생략)...
// 위쳇 로그인 라이브러리
implementation files('libs/open_sdk_r6019_lite.jar')
// Android Support 라이브러리
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
// Google Play Services 라이브러리
implementation ‘com.google.android.gms:play-services-auth:17.0.0’ // Peppermint v2.8.2+
implementation 'com.google.android.gms:play-services-ads-identifier:17.0.0' // Peppermint v2.8.2+
implementation 'com.google.android.gms:play-services-games:17.0.0' // Peppermint v2.8.2+
// Facebook 라이브러리
implementation 'com.facebook.android:facebook-common:6.5.1' // Peppermint v2.9.1- Facebook Version Update (v5.5.1 -> v6.5.1)
implementation 'com.facebook.android:facebook-core:6.5.1' // Peppermint v2.9.1 - Facebook Version Update (v5.5.1 -> v6.5.1)
implementation 'com.facebook.android:facebook-login:6.5.1' // Peppermint v2.9.1 - Facebook Version Update (v5.5.1 -> v6.5.1)
implementation 'com.facebook.android:facebook-share:6.5.1' // Peppermint v2.9.1 - Facebook Version Update (v5.5.1 -> v6.5.1)
//...(생략)...
}
//...(생략)...
4) gradle.properties 파일 내 androidX 사용 설정
- gradle.properties 파일 내 아래의 코드를 추가하세요. gradle.properties 파일이 존재하지 않는 경우 신규 생성 후 아래의 코드를 추가하세요.
android.useAndroidX=true
android.enableJetifier=true
android.enableJetifier=true
챗봇 UI 설정하기
- 유저의 편의를 고려해 챗봇 UI를 세로 고정형으로 노출합니다. 챗봇 기능을 사용하는 게임에서 설정이 필요한 내용으로 AndroidManifest.xml 내 챗봇 액티비티 설정을 추가해야 합니다.
<activity
android:name="com.com2us.peppermint.PeppermintChatbotActivity"
android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="behind" />
android:name="com.com2us.peppermint.PeppermintChatbotActivity"
android:configChanges="orientation|screenSize|keyboard|keyboardHidden"
android:screenOrientation="behind" />
Hive | >> | >> |
플랫폼별 환경설정 가이드 Hive Android 환경설정 |
>> |
하이브 모듈 API 레퍼런스 |
>> |
하이브 기능 활용 가이드 |