앱 접근 권한에 대한 고지 화면 커스터마이징
화면 디자인
만약 Hive가 제공하는 권한 고지 팝업 대신 게임 UI와 잘 어울리는, 게임별 맞춤식(customize) 팝업으로 변경하고 싶다면 이 가이드를 자세히 읽어보길 권장한다.
![]() |
![]() |
C2SModuleSocial_Info
C2SModuleSocial_Info를 이용해 권한 고지 정보를 요청한다. Hive SDK v1.17.0 버전부터 사용 가능하며, 사용자가 권한을 이미 허용했거나 거부했다면 더이상 권한 고지 정보를 반환하지 않는다. 즉, 권한을 허용/거부하기 전에 요청하였을 경우에만 권한 고지 정보를 반환받을 수 있다.
argument type | type | desc | platform |
---|---|---|---|
type | string | “permission”: 권한 고지 정보 | all (1.17.0+) |
Result – Api.Social_Info
argument type | type | desc | platform |
---|---|---|---|
권한 고지 정보를 요청했을 때 (type == “permission”) | |||
type | string | “permission” | all (1.17.0+) |
data | PermissionViewData | 권한 고지 내부에 필요한 데이터를 포함한 구조체 | all (1.17.0+) |
PermissionViewData | |||
contents | string | 권한 고지 팝업에 대한 설명 (UI 노출이 필요함) |
all (1.17.0+) |
permission | list |
각 권한에 대한 설명과 이름이 들어 있는 선형리스트 혹은 배열. OS를 업데이트하거나 법령에 따라 권한 정보가 추가될 수 있으므로 리스트에 들어 있는 데이터 개수를 표히사는 UI는 여러 값을 수용하는 능동적인 디자인으로 구성해야 함. 데이터에 대한 내용은 PermissionViewUnitData를 참고 |
all (1.17.0+) |
PermissionViewUnitData | |||
title | string | 권한 이름 (UI 노출이 필요함) |
all (1.17.0+) |
contents | string | 권한 내용 (UI 노출이 필요함) |
all (1.17.0+) |
nativePermissionName | string | 각 OS에서 사용하는 권한 이름 | all (1.17.0+) |
permissionCategory | string | OS별 기능 중 서로 유사한 기능의 권한 그룹 이름 (Android, iOS의 여러 권한 중 유사한 권한일 경우 permissionCategory 값이 동일함) |
all (1.17.0+) |
권한 고지 UI 예시
다음은 requestPermissionViewData를 호출하여 전달받은 값으로 구성한 예시다. 이미지를 참고하여 각 게임에 어울리는 UI를 디자인할 수 있다.
권한 고지 관리하기
권한 고지를 한 번 노출했다면 권한 고지 팝업을 다시 띄울 필요가 없다. Hive SDK는 권한 고지 관리가 용이하도록 고지 여부를 확인한다. 권한을 이미 고지한 상태라면 C2SModuleSocial_Info type="permission"
메서드 호출 시 Result 데이터로 data 키가 전달되지 않는다.
(Android 6.0 미만 버전에선 앱 최초 실행 시 C2SModuleSocial_Initialize가 완료된 이후 더이상 Result 데이터로 data 키가 전달되지 않음)
권한 고지를 아직 노출하지 않은 경우 | 권한 고지를 이미 노출한 경우 |
---|---|
{ "type":"permission", "data":{ "contents":"...", "permission":{ [...생략...] } }} | { "type":"permission"}// data키가 전달되지 않음 |
| | |
화면 문구
접근하는 정보 수준에 따라 필수/선택 접근 권한을 노출한다. 게임에서 필요한 앱 접근 권한을 추가해 안내할 수 있다.
iOS
사용 시점에 권한을 요청하라는 iOS 정책에 의거, CAMERA, PHOTO, PUSH, IDFA 4가지 권한이 앱 접근 권한 고지의 기본 항목으로 설정되어 있다. CAMERA와 PHOTO 권한은 기능을 실제 사용하는 시점에 권한 요청 팝업이 생성되고 IDFA 권한은 SDK를 초기화할 때 권한 요청 팝업이 생성된다. PUSH 권한은 유저가 명시적 알림 설정을 한 경우 SDK를 초기화할 때 요청한다(명시적 알림 미설정 시 조용한 알림으로 기본 설정됨). 네 항목 모두 선택 권한으로, 유저가 거부한다고 해도 게임 플레이에는 문제가 없다. Hive 1.20.2.2 버전부터 iOS에서는 Hive SDK가 권한 고지를 하지 않는다. Hive SDK가 사용하는 CAMERA, PHOTO, PUSH, IDFA 권한에 대해서 게임에서 별도로 권한 고지를 구성할 필요는 없다.
게임에서 자체적으로 사용하는 iOS 권한이 있는 경우 유저에게 고지 하기를 원한다면 아래 권한 고지 문구 설정 지원을 참고하라. 게임에서 추가로 권한을 고지하기 위해서는 다국어 지원 파일 (localize)을 수정한다. 다국어 지원 파일 > ko.lproj 폴더 > Permission.strings에서 왼쪽 key 값은 그대로, 오른쪽 value 값은 수정하여 사용할 수 있다. value 값을 빈 칸(“”)으로 수정하면 고지 화면에 나타나지 않는다.
- Permission.strings를 기존 localize 폴더의 ko.proj 안에 추가한다.
- Permission.strings 내 추가 가능한 권한 리스트에서 추가가 필요한 권한의 제목과 내용 값을 추가한다.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758"Header_Title" = "원활한 게임 서비스 이용을 위한 접근 권한 안내";"Header_OK" = "OK";"Camera_Title" = "(선택)카메라";"Camera_Description" = "게임 내 프로필에서 카메라 사용시 요청하는 권한입니다.";"Photos_Title" = "(선택)사진첩";"Photos_Description" = "게임 내 프로필에 내 사진첩에 있는 사진을 업로드시 요청하는 권한입니다.";"Push_Title" = "(선택)푸시 알림";"Push_Description" = "해당 게임에 대한 푸시 메시지를 받기 위해 요청하는 권한입니다.";"IDFA_Title" = "(선택)광고 식별자";"IDFA_Description" = "프로모션 타겟팅 및 추적 분석을 위한 광고 식별자(IDFA) 사용을 요청하는 권한입니다.";"Common_Title" = "";"Common_Description" = "선택 권한은 동의하지 않아도 서비스 이용에 영향을 주지 않습니다.";// 추가 가능한 권한"AppleMusic_Title" = "";"AppleMusic_Description" = "";"Bluetooth_Title" = "";"Bluetooth_Description" = "";"Calendar_Title" = "";"Calendar_Description" = "";"Contacts_Title" = "";"Contacts_Description" = "";"Health_Title" = "";"Health_Description" = "";"Home_Title" = "";"Home_Description" = "";"Location_Title" = "";"Location_Description" = "";"Microphone_Title" = "";"Microphone_Description" = "";"Motion_Title" = "";"Motion_Description" = "";"Reminders_Title" = "";"Reminders_Description" = "";"Siri_Title" = "";"Siri_Description" = "";"SpeechRecognition_Title" = "";"SpeechRecognition_Description" = "";"TVProviderAccount_Title" = "";"TVProviderAccount_Description" = "";
- 정상적으로 처리되면 앱을 처음 실행할 때 추가한 권한 제목과 내용이 노출된다.
Android
Android 6.0 이상 기기에서 앱 접근 권한 고지 팝업이 노출되며, 사용 시점에 권한을 노출하라는 Android 정책에 따라 PHONE, STORAGE 2가지 권한이 앱 접근 권한 고지의 기본 항목으로 설정되어 있다. PHONE 권한은 게임 내 이벤트 보상 지급 시 단말 식별값을 사용할 수 있도록 요청된다. STORAGE는 게임 다운로드 시 외부 저장소에 저장할 수 있는 권한으로, 게임에서 사용하지 않을 경우 제거할 수 있는 항목이다. PHONE과 STROAGE는 실제 사용 시점인 SDK 초기화 시 요청된다. 두 항목 모두 선택 권한으로, 유저가 거부한다고 해도 게임 플레이에는 문제가 없다.
Hive 1.20.2.2 버전부터는 Android에서 Hive 초기화 시 권한 고지 및 요청을 진행하지 않는다. 기능 사용 시 권한이 필요한 경우 사용자에게 고지 및 요청을 하도록 권장하는 Android 사항에 따라 Hive 초기화 시 진행하지 않으며, 게임앱에서 별도로 권한이 필요한 경우 Hive 에서 제공하는 권한 고지 데이터 요청 API(Social_Info) 및 권한 요청 API(Social_Show)를 사용하거나 자체 구현하여 사용한다.
게임에서 추가로 앱 접근 권한에 대한 고지를 추가하려면 res/ 하위 hive_permission_strings 파일 내에 미리 정의된 권한 그룹 중 사용하려는 권한의 그룹 이름과 설명을 기재하여 사용할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hive_permission_ui_title">원활한 게임 서비스 이용을 위한 접근 권한 안내</string> <string name="hive_permission_ui_ok">OK</string> <!-- PermissionGroup 'PHONE' --> <string name="hive_permission_phone_title">(선택)전화번호</string> <string name="hive_permission_phone_desc">이벤트 SMS 발송을 위한 핸드폰번호 수집시 필요한 기능입니다.</string> <!-- PermissionGroup 'CONTACTS' --> <string name="hive_permission_contacts_title">(선택)주소록</string> <string name="hive_permission_contacts_desc"></string> <!-- PermissionGroup 'STORAGE' --> <string name="hive_permission_storage_title">(선택)저장공간</string> <string name="hive_permission_storage_desc">추가 다운로드시 외부 메모리 저장소를 사용할 수 있도록 요청하는 권한입니다.</string> <!-- PermissionGroup 'LOCATION' --> <string name="hive_permission_location_title">(선택)위치</string> <string name="hive_permission_location_desc">이 기기의 위치에 엑세스 하기 위한 권한입니다.</string> <!-- PermissionGroup 'MICROPHONE' --> <string name="hive_permission_microphone_title">(선택)마이크</string> <string name="hive_permission_microphone_desc">음성 기능을 사용하기 위한 권한입니다.</string> <!-- PermissionGroup 'CAMERA' --> <string name="hive_permission_camera_title">(선택)카메라</string> <string name="hive_permission_camera_desc">사진찍기 및 동영상 녹화를 위한 권한입니다.</string> <!-- PermissionGroup 'SMS' --> <string name="hive_permission_sms_title">(선택)SMS</string> <string name="hive_permission_sms_desc"></string> <!-- PermissionGroup 'CALENDAR' --> <string name="hive_permission_calendar_title">(선택)캘린더</string> <string name="hive_permission_calendar_desc"></string> <!-- PermissionGroup 'SENSORS' --> <string name="hive_permission_sensors_title">(선택)센서</string> <string name="hive_permission_sensors_desc"></string> <!-- PermissionGroup 'COMMON' --> <string name="hive_permission_common_title"></string> <string name="hive_permission_common_desc">선택 권한은 동의하지 않아도 서비스 이용에 영향을 주지 않습니다.</string> </resources> |