모든 문서(일반 문서, 분류 문서, 파일(이미지, 사운드 등) 문서) 분류가 달려 있어야 합니다.

--Administrator (토론)

Active User 모듈 적용 가이드 (iOS)

컴투스위키
이동: 둘러보기, 찾기
Com2uS 공통모듈 >> Active User >> Active User 모듈 적용 가이드 (iOS)

Active User 모듈 적용 가이드 (Android)

Active User 모듈 적용 가이드 (Unity3d)

>> Active User 모듈 레퍼런스 가이드 >> Active User 샘플 가이드 >> Active User FAQ


목차

역사

<작성법 참고>
Version Date SVN Revision 담당자 변경 사항
2.10.4 2020-09-25 최보경
  • DID 획득 성공 시 CommonModule 통해 hive-core 모듈로 DID를 전달하는 내부 로직 추가
  • iOS 11.x 기기에서 웹뷰를 길게 터치 후 창을 닫았을 시 앱 멈춤 현상이 발생하지 않도록 수정
2.10.2 2020-06-16 정다운
  • HIVE UI에서 사용하는 버튼의 유저 인터랙션 개선
  • 앱 상태가 백그라운드에서 포그라운드로 전환될 때 간헐적으로 앱이 종료되는 오류 수정
  • 약관 노출 도중 앱 상태가 백그라운드에서 포그라운드로 전환될 때 하단 바가 상단에 노출되는 오류 수정
2.10.1 2020-01-23 정다운
  • Common Module v1.6.0 이상 필수 적용
  • C2SActiveUserResources.bundle 버전 3.3으로 업데이트
    • 기존 리소스 번들 제거 후 교체 필요
  • Xcode 빌드 시 발생하는 권한 관련 에러를 해결할 목적으로 권한 페이지 UI의 구성 환경을 변경
2.10.0 2019-12-12 최보경
  • Common Module v1.6.0 이상 필수 적용
  • C2SActiveUserResources.bundle 버전 3.2으로 업데이트
    • 기존 리소스 번들 제거 후 교체 필요
  • 더 이상 UIWebView를 사용하지 않고 WKWebview를 사용하도록 변경. (iOS13 대응)
  • Unity 엔진에서 Xcode11로 빌드할 경우 iOS13 단말에서 하이브 UI가 게임 씬 아래로 뜨는 부분을 수정
2.9.0 2019-10-16 최보경
  • Common Module v1.5.0 이상 필수 적용
    • 주의 : 모든 개별모듈 동시 업데이트 필요
  • 퍼널 로그 분석 시 앱 이벤트 전송 API 추가. [API 가이드]
  • 권한 고지 팝업 노출 여부를 컨트롤 하는 API 추가 [API 가이드]
  • 모든 웹뷰에서 쿠키 제거
  • iOS 13을 대상으로 한 앱에서의 정상적인 동작을 보장
    • 클라이언트에 저장되는 모든 프로퍼티를 iCloud 백업 대상에서 제외
    • Dark mode 사용시에도 UI color 정상적으로 노출되도록 수정
  • 약관 로그 전송시 간헐적으로 did 전송되지 않는 현상 수정
2.8.8 2019-06-25 최보경
  • C2SActiveUserResources.bundle 버전 3.1으로 업데이트
    • 기존 리소스 번들 제거 후 교체 필요
  • 권한 고지 정보를 획득할 수 있는 기능 추가 [API 가이드]
  • 권한 고지 페이지 다해상도 UI 대응
  • 권한 고지 내용 중 권한을 동의하지 않아도 서비스에 영향이 없음을 알리는 문구 추가
  • 점검 팝업 버튼의 텍스트 색상 수정
2.8.7 2019-03-14 2859 최보경
  • C2SActiveUserResources.bundle 버전 3.0으로 업데이트
    • 기존 리소스 번들 제거 후 교체 필요
  • 모듈 UI 다해상도 대응을 위해 벡터 드로잉 리소스 적용
    • 약관 동의 페이지, 약관 다시보기, 점검/공지/업데이트 팝업, 제재 팝업
  • Pad 화면 크기에 따른 UI 디자인 적용
    • 점검/공지/업데이트 팝업, 제재 팝업
  • ViewController 노출 window 기준을 delegate의 window로 변경
    • 약관 동의 페이지, 권한 고지 페이지, 약관 다시보기, 점검/공지/업데이트 팝업, 제재 팝업
  • 약관 동의 완료 시 동의한 정보를 저장하는 로직 추가 (Push v4 관련)
  • 권한 고지 페이지 노출 시 게임 화면 노출 방향과 일치하지 않는 이슈 수정
  • GDPR 환경의 +32bit 기기에서 약관이 반복적으로 나타나는 현상 수정
2.8.6 2018-11-20 2844 최보경
  • 약관 동의창이 닫히는 중 간헐적으로 UI 노출이 겹쳐지던 현상 수정
  • 앱이 백그라운드 상태일 때, 서버점검 팝업의 남은 시간이 갱신되지 않는 오류 수정
  • CS_ActiveUserStart, CS_ActiveUserStartEx API 호출로 초기화 시 서버 점검, 업데이트, 공지팝업이 설정되어 있는 경우 팝업을 노출하도록 수정 (Android 와 통일)
    • 기존에 팝업 노출여부 default 값이 false여서 iOS에서 팝업이 노출되지 않았음
2.8.5 2018-08-31 2844 최보경
  • iOS12 이상에서 약관 동의 화면 상단 이미지의 위치가 올바르게 노출되지 않는 이슈 수정
2.8.4 2018-06-27 2841 최보경
  • 점검/공지 팝업에 여러가지 기능 버튼을 추가
    • C2SActiveUserResources.bundle 버전 2.10으로 업데이트
2.8.3 2018-05-02 2838 최보경
  • Update_DID 및 Get_DID API 호출 조건이 되는 데이터 목록 변경 (HIVE SDK v4와 프로토콜 통일)
  • Download API 호출 시 서버에서 받은 DID가 변경되었을 경우 변경된 DID를 사용하도록 변경
  • iOS에서 사용하지 않는 sms 수신동의 키 제거
  • 서버에서 사용하지 않는 deviceToken 전송 로직 제거
2.8.2 2018-02-07 2833 최보경
  • URL을 제공하여 제재 유저가 1:1 문의로 이동할 수 있는 기능 추가 (통합모듈 only)
  • 클라우드 Backup기능을 통해 복원하는 기기가 백업한 기기의 DID를 사용하게 되는 현상 수정
2.8.1 2017-12-18 2830 최보경
  • Push 모듈을 우선 초기화하고 ActiveUser 모듈을 이후 초기화 시 약관이 노출되지 않는 이슈 수정
  • 현재 topView의 viewcontroller가 존재하지 않을 때 권한 페이지 노출 스킵하도록 수정(권한 페이지 노출 에러 상황 시 대기 딜레이 단축)
2.8.0 2017-12-08 2828 최보경
  • 네트워크 타임아웃 최초 요청 시간을 클라이언트에서 지정할 수 있는 기능 추가
  • 약관 동의 창 노출 조건에 국가 코드를 추가
    • 기존: 약관 버전이 높은 A 국가에서 약관 동의를 진행했을 경우, 앱 실행시 약관 버전이 낮은 B 국가로 판단되어도 약관 노출되지 않았음
    • 변경: 약관 동의 결과와 버전을 국가별로 체크하여 약관 노출 여부를 결정하도록 변경)
    • 앱 권한 고지 커스터마이징 설명 (리소스가 추가되었으니 꼭 확인바랍니다.)
  • 앱 실행 시 최초 1회에 한하여 해당 앱이 사용하는 앱 권한에 대해 사용자에게 보이는 앱 권한 고지 팝업 추가
    • iOS 권한 고지 화면은 한국 IP 일때만 노출되며 한국어로 표시됩니다.(다른 국가 IP에선 노출되지 않습니다.)
  • 더이상 네크워크 단절 상황에서 로컬 약관이 노출되지 않도록 변경
    • 어떠한 경우에도 로컬 약관은 이제 노출되지 않습니다. 약관을 못 띄운 경우였다면 다음 앱 재실행 시 정상 네트워크 연결 상태라면 약관이 노출됩니다.
2.7.5 2017-10-30 2824 최보경
2.7.4 2017-09-20 2819 최보경
  • 버전 업데이트 시 클라이언트 내 did 누락 현상 수정
  • iPhoneX 에서 약관창 스크롤 시 크래시 나는 현상 수정
  • 탈옥 검증 시 system() 사용하지 않도록 수정


2.7.3 2017-08-11 2814 최보경
  • 모듈 내부 서버통신 데이터에 통합 식별자 추가
  • SetGameLanguage 함수 추가 (게임 언어 설정)
    • 언어 설정은 게임 언어를 우선시하며 SetGameLanguage API로 게임 언어를 설정하지 않을 경우 단말 언어를 따르도록 수정
  • UI 관련 텍스트 국가별 추가 번역 및 오탈자 수정
  • 점검 공지 팝업 노출 및 정보보기 API에서 serverId를 파라미터로 사용하지 않도록 수정
  • 게임 업데이트 시 기존 DID가 업데이트 되는 이슈 수정


2.7.2 2017-07-24 2810 최보경
  • 아랍어 적용 시 UI 변경되지 않도록 수정
  • 모듈 내부 아랍어 텍스트 추가
  • ActiveUser Bundle이 업데이트 되었습니다. 최신 Bundle 2.6버전을 적용하여 사용해주시기바랍니다.


2.7.1 2017-01-26 2802 정다운
  • 점검/공지팝업 UI 변경
  • 데이터 요청에 대한 네트워크 타임아웃 로직 추가


2.7.0 2016-11-21 2794 정다운
  • ATS(App Transport Security) 관련 대응 (모듈 내부에서 호출하는 http 도메인을 https로 변경)
  • CS_UpdateNoticeShowPopup, CS_UpdateNoticeGetPopupInfo 수행시 server id값이 연동되지 않는 버그 수정
  • CS_UpdateNoticeShowPopup, CS_UpdateNoticeGetPopupInfo 에러 대응 코드 보강
  • 테스트 단말의 HIVE 게임 서버 점검 우회 기능 개선 (해당 사항 적용으로 약관 동의 후 서버 점검 팝업 노출되도록 수행 로직 변경)


2.6.8 2016-10-07 2793 정다운
  • AUv2.6.5이후 iOS 강제 업데이트 팝업 사용시 url 이동하지 않는 버그 수정


2.6.7 2016-9-09 2788 정다운
  • 루팅/탈옥 단말에 대한 정보 전송 코드 추가
  • 점검/공지 팝업 노출시 기존 앱 화면의 배경을 투명으로 변경하던 코드 제거
  • 점검/공지 보기 미노출 상황에도 콜백을 전달하도록 수정
  • 약관 다시보기 화면 깨짐 현상 수정
  • AU초기화 중 단순 공지 팝업 닫기 이후 초기화가 진행되지 않던 버그 수정


2.6.6 2016-07-29 2785 정다운
  • ActiveUser 2.6.5버그수정
  • ActiveUser 2.6.5에서 안드로이드 모듈와 API 일치하지 않는 부분 변경
    • CS_UpdateNoticeShowPopup, CS_UpdateNoticeGetPopupInfo API 추가
  • ActiveUser Bundle이 업데이트 되었습니다. 최신 Bundle 2.4버전을 적용하여 사용해주시기바랍니다.


2.6.5 2016-07-27 2782 정다운
  • 약관 노출 & 점검 공지 팝업 노출 로직 변경
  • CS_StartNoticeWithoutNotice, CS_UserAgreeShowNotice, CS_UserAgreeGetNoticeInfo API 추가
    • CS_StartNoticeWithoutNotice : ActiveUser초기화시 점검, 공지 여부와 관계 없이 진행하는 API
    • CS_UserAgreeShowNotice : 점검, 공지가 존재하는 경우 해당 팝업 노출하도록 하는 API
    • CS_UserAgreeGetNoticeInfo : 점검, 공지 데이터를 JSON 형태로 전달받을 수 있는 API
  • 점검 업데이트 공지 팝업 UI 수정
  • 약관 다시보기 로고 미노출 버그 수정
  • ActiveUser Bundle이 업데이트 되었습니다. 최신 Bundle을 적용하여 사용해주시기바랍니다.
  • ActiveUser 2.6.6 사용 필수


2.6.3 2016-05-26 2772 정다운
  • AU 2.6.1 버전 이상에서 CS_ActiveUserStart() 호출시 서버가 설정되지 않던 버그 수정
  • 약관동의창 이상한 곳에 노출되던 버그 수정


2.6.2 2016-01-19 2744 김규진
  • 2.4.5 -> 2.6.1 업데이트 시, DID 가 재발급 되는 이슈 수정.


2.6.1 2016-01-04 2737 김규진
  • 샌드박스 환경 지원


2.4.5 2015-10-08 2725 김규진
  • 약관동의 기록이 남지않는 이슈 대응


2.4.4 2015-09-02 2721 김규진
  • 중국어 언어 코드 변경
2.4.3 2015-06-17 2679 김규진
  • ActiveUser Server domain 변경.
    • 변경 전 : activeuser.com2us.net
    • 변경 후 : activeuser.qpyou.cn
2.4.2 2015-04-06 2656 김규진
  • resource Error Log 추가
  • CS_ActiveUserStart 할 때 마다, Callback 전달 (Android와 spec 맞춤).
기존에는 중복 Start를 막았음.
2.4.1 2015-02-06 2639 김규진
  • CommonModule에서 MCC, MNC 가져옴
  • 최소 빌드 버젼 iOS 6.0 으로 변경
2.4.0 2015/1/7 2627 조태형, 김상우
  • arm64 지원
  • TouchJson lib 제거 (TouchJson lib 삭제하세요)
  • 약관 갱신으로 재동의 할 때 죽는 문제 해결.
  • 온라인 동의 ver.5 -> Reset -> 오프라인 동의 ver.4 -> 온라인 재동의 ver.5 할 때 약관 안뜨는 문제 해결.
2.3.2 2014/11/14 2609 조태형
  • 네트워크 불량 + USIM 없음 + 약관 지원국가 아닌 경우 Callback 주지 않는 문제 수정.
2.3.1 2014/11/11 2608 조태형
  • Deprecated CS_UserAgreeShowUI, CS_UserAgreeShowUIEx
  • "로딩중" 일본어 번역 오류 수정
2.3.0 2014/10/27 2590 이진우
2.1.2 2014/09/30 2577 이진우
  • iOS8 대응
2.1.1 2013/10/29 2498 이진우
  • Xcode 5 UI 대응
  • CS_UserAgreeShowTermsUIEx 이용약관 노출 URL 커스터마이즈 기능 추가
  • ActiveUserUnityPlugin 삭제 메인 라이브러리 파일에 포함되었음
2.1.0 2013/09/06 2478 김혜란
  • DID 단말 저장 후 변경되지 않게 수정. Update_DID 프로토콜 추가
  • DID 콜백 추가
  • 세션 전송 조건 백오피스 설정 기능 추가
  • 유저 동의 이용약관 링크 변경
2.0.5 2013/08/26 2465 김혜란
  • AU보다 공통모듈이 initialize 될 경우 Download Check 누락 되는 버그 수정
  • Session Data DID 버그 수정
2.0.4 2013/08/22 2462 김혜란
  • 모듈 버전 수집 기능 추가
  • 서버 프로토콜 DID 정보 추가
  • DID 암호화
2.0.3 2013/08/12 2455 김혜란
  • iOS 4.3 HTTP 헤더 리퀘스트 버그 수정
  • 유저 세션 정보 상용, 테스트 서버 전송 버그 수정
2.0.2 2013/8/8 2453 김혜란
  • 세션 수집중 앱 정지시 연결 시간 기존 1분에서 10초로 변경
  • iOS5.x이하 단말에서 DID를 가져오는 경우 버그 수정
  • CS_ActiveUserGetDID 호출시 모듈 내부에 저장된 DID값 리턴.
2.0.1 2013/7/31 2440 김혜란
  • iOS 4.3 단말 UI 버그 수정
2.0.0 2013/7/31 2432 김혜란
  • DID, Session, VersionCheck 추가됨
  • ActiveUser 프로젝트 설정 2.0.0 이후 버전 리소스 변경
  • FrameWork 추가 CoreGraphics.framework, AdSupport.framework
  • AU 세션 전송, 다운로드 체크 및 유저 동의 설정 CS_UserAgreeShowUI -> CS_UserAgreeShowUIEx로 변경
  • 자료형 추가 : USER_AGREE_COLOR_TYPE
  • 함수 추가 : void CS_ActiveUserUseTestServer(), const char* CS_ActiveUserGetDID(), void CS_ActiveUserRegisterToken(void* deviceToken)(iOS Only), void CS_UserAgreeShowUIEx(void* parentView, USER_AGREE_COLOR_TYPE colorType)
  • Deprecated 함수 : void CS_AppVersionCheckSetCallback(AVCCB cb), void CS_AppVersionCheckShowMessageBox()
  • AppVersion Check 지원 종료


모든 버전의 역사 보기

적용 가이드

Resource 적용


  • 특징
    • 버전 2.3.0 부터 약관의 실시간 반영을 위해 Webview를 사용함.
    • 네트워크가 원활하지 않을 때 약관을 받아올 수 없으므로, 로컬에도 약관 파일을 저장하고 있어야함.
    • 로컬에 저장해야 하는 파일은 C2SAppInfoResource_com2us.bundle 이며, TF에서 자체적으로 제작.
    • 2.8.0 이후 네트워크 통신이 실패해도 로컬 약관을 띄우지 않습니다. 때문에 로컬 약관 리소스를 별도로 첨부할 필요가 없습니다. (어떠한 경우에도 로컬 약관을 띄우지 않음)



위 경로의 샘플 C2SAppInfoResource_com2us.bundle '약관 정보 Json파일(국가에 맞는 약관을 설정)', '약관이 담겨있는 Html' 파일로 구성되어 있음.

실제 서비스 시 TF에서는 위 형식에 맞도록 C2SAppInfoResource_com2us.bundle 파일을 제작하여 사용해야 함.


AU Webview Resource.jpeg

프로젝트 빌드 설정


라이브러리 추가

헤더 추가

Other Linker Flags

  • 프로젝트의 타겟을 클릭한 후, 우측 상단의 검색창에 Other Linker Flag를 입력.
    • 검색 결과가 나오지 않을 경우, 메뉴 탭을 Basic에서 All 로 변경.
  • Debug와 Release를 더블 클릭 한 후 아래 항목을 추가.
    • 이미 추가 된 항목이 있다면, 해당 항목은 제외.


AU OtherLinkerFlag 2.png


  • debug: -ObjC -lC2SActiveUser_$(PLATFORM_NAME)d -lC2SCommonModule_$(PLATFORM_NAME)d
  • release: -ObjC -lC2SActiveUser_$(PLATFORM_NAME) -lC2SCommonModule_$(PLATFORM_NAME)
  • 관련 Header 파일명 : C2SActiveUser.h


Search Paths

  • 프로젝트의 타겟을 클릭한 후, 우측 상단의 검색창에 Search Paths를 입력.
    • 검색 결과가 나오지 않을 경우, 메뉴 탭을 Basic에서 All 로 변경.
  • Header Search Paths와 Library Search Paths를 더블 클릭 한 후 필요한 모듈의 경로를 추가.
    • 사용자마다 모듈의 경로가 다를 수 있으니, 자신의 경로에 맞게 적절히 입력.


Framework

AU OtherLinkerFlag 3.png

  • CoreTelephony.framework
  • AdSupport.framework
  • CoreGraphics.framework
  • QuartzCore.framework.



튜토리얼

Callback 함수 추가

사용하려는 위치에 아래 예시처럼 콜백 함수를 추가.

약관 동의 Callback

void UserAgreeCallBack(USER_AGREE_RESULT type)
{
    switch (type) {
        case USER_AGREE_SUCCESS:
            NSLog(@"USER_AGREE_SUCCESS");
            break;
        case USER_AGREE_TERMS_CLOSE:
            NSLog(@"USER_AGREE_TERMS_CONFIRM");
            break;
        default:
            break;
    }
}

각 약관 동의 콜백은 다음과 같은 경우에 호출

  • USER_AGREE_SUCCESS
1.약관 동의 화면이 나왔을 때, 모든 체크박스를 체크한 경우.
2.이미 약관동의가 완료 된 경우.
3.약관 동의가 필요 없는 국가의 경우.


  • USER_AGREE_TERMS_CLOSE
1.게임내 이용약관 확인 함수 CS_UserAgreeShowTermsUI() 를 호출 한 후 닫기 버튼을 누른 경우. (iOS only)
(유니티 사용 or 로드가 큰 게임의 경우 CS_UserAgreeShowTermsUI() 호출시 게임정지. USER_AGREE_TERMS_CLOSE 콜백시 게임 재개 가능.)

Get DID Callback

void ActiveUserCallBack(ACTIVE_USER_RESULT type)
{
    switch (type) {
        case ACTIVE_USER_GETDID_SUCCESS:
            NSLog(@"ACTIVE_USER_GETDID_SUCCESS");
            break;
        case ACTIVE_USER_GETDID_FAIL:
            NSLog(@"ACTIVE_USER_GETDID_FAIL");
            break;
        default:
            break;
    }
}

Wrapper 사용 예시

콜백 함수를 추가 한 뒤, ActiveUser Start를 호출.

 void startClet(int argc,char* argv[])
{
    CS_ActiveUserSetCallback(ActiveUserCallBack); // Get did success / fail callback
    CS_UserAgreeSetCallback(UserAgreeCallBack); // User agree callback
    CS_ActiveUserStartEx(); // 약관 동의 시작
}

iOS 사용 예시

- (void)viewDidLoad
{  
    CS_ActiveUserSetCallback(ActiveUserCallBack);
    CS_UserAgreeSetCallback(UserAgreeCallBack);
    CS_ActiveUserStartEx();
}

게임 시작과 동시에 최초 1회에 한하여 약관 동의 창이 노출.

ActiveUser의 Start 함수는 세션 기록을 위해, 앱을 시작할 때 마다 필수로 호출되어야 한다.

게임 내 이용약관 노출

  • 게임 내에서 이용약관을 보여주는 기능을 사용할 경우 CS_UserAgreeShowTermsUI()를 호출.
해당 함수를 호출하게 되면 이용약관 페이지가 모달뷰로 노출됨.
  • loadView.c 파일의 activeUserShowTerms() 함수는 이용약관 확인 버튼을 누르는 경우 호출 되는 코드 입니다.
 void activeUserShowTerms()
 {
     CS_UserAgreeShowTermsUI(NULL);
 }

Active User Sample

전체적인 흐름은 program/ wrapper /sample /iOS / ActiveUserSample을 참고.

Debug

Debug 모드에서만 디버깅로그가 남습니다. 디버깅 콘솔창에서 Command + F -> ActiveUser 로 검색 합니다.


Com2uS 공통모듈 >> Active User >> Active User 모듈 적용 가이드 (iOS)

Active User 모듈 적용 가이드 (Android)

Active User 모듈 적용 가이드 (Unity3d)

>> Active User 모듈 레퍼런스 가이드 >> Active User 샘플 가이드 >> Active User FAQ
개인 도구
이름공간

변수
행위
둘러보기
도구모음
인쇄/내보내기