04/28/2025 20:45:30

QQ 채널 설명

1. Android 프로젝트 설정

1 Android 프로젝트 설정

1.1 권한 설정

AndroidManifest.xml 에 권한 신규 추가

 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

1.2 Activity 입구 설정

Application 노드에 다음과 같은 activity 설정 추가

<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="tencent{YOUR_QQ_APP_ID}" />
        </intent-filter>
</activity>

[info] {YOUR_QQ_APP_ID} 를 요청한 QQ APPID 로 변경

1.3 App Id 설정

프로젝트 assets/MSDKConfig.ini 파일에 아래 설정 추가

[QQ 채널 설정]
QQ_APP_ID={YOUR_QQ_APP_ID}

[info] {YOUR_QQ_APP_ID} 를 요청한 QQ APPID 로 변경

2、 iOS 프로젝트 설정

2 iOS 프로젝트 설정

2.1 MSDKConfig 구성 파일

프로젝트에서 MSDKAppSetting.bundle/MSDKConfig.ini 파일을 찾아, 아래 설정 추가

QQ_APP_ID = {YOUR_QQ_APP_ID}

[info] {YOUR_QQ_APP_ID} 를 요청한 QQ APPID 로 변경

2.2 Xcode 프로젝트 구성 파일 info.plist

아래 노드 찾기 또는 만들기:

 <key>CFBundleURLTypes</key>
     <array>
     <dict>
         <key>CFBundleURLSchemes</key>
         <array>
             <string>tencent{your qq app id}</string>
         </array>
     </dict>
 </array>
 <key>LSApplicationQueriesSchemes</key>
 <array>
     <string>tim</string>
     <string>mqq</string>
     <string>mqqapi</string>
     <string>mqqwpa</string>
     <string>mqqbrowser</string>
     <string>mttbrowser</string>
     <string>mqqOpensdkSSoLogin</string>
     <string>mqqopensdkapiV2</string>
     <string>mqqopensdkapiV3</string>
     <string>mqqopensdkapiV4</string>
     <string>wtloginmqq2</string>
     <string>mqzone</string>
     <string>mqzoneopensdk</string>
     <string>mqzoneopensdkapi</string>
     <string>mqzoneopensdkapi19</string>
     <string>mqzoneopensdkapiV2</string>
     <string>mqqapiwallet</string>
     <string>mqqopensdkfriend</string>
     <string>mqqopensdkdataline</string>
     <string>mqqgamebindinggroup</string>
     <string>mqqopensdkgrouptribeshare</string>
     <string>tencentapi.qq.reqContent</string>
     <string>tencentapi.qzone.reqContent</string>
 </array>
 <key>NSAppTransportSecurity</key>
     <dict>
     <key>NSAllowsArbitraryLoads</key>
     <true/>
 </dict>

[info] {your qq app id} 를 요청한 QQ APPID 로 변경

2.3 Unity XUPoter 의 xx.projmods 파일 설정

Unity 에서 XCode 프로젝트를 도출할 때, 도출한 XCode 프로젝트에 3.2의 설정이 가능하도록 projmods 파일을 설정하여야 합니다

{
    "group": "MSDKQQ",
    "libs": [],
    "frameworks": [],
    "files": [],
    "folders": [],
    "excludes": [],
    "headerpaths":[],
    "build_settings":
    {},
    "system_capabilities": {},
    "Info.plist":{
        "LSApplicationQueriesSchemes":
        [
            "tim",
            "mqq",
            "mqqapi",
            "mqqwpa",
            "mqqbrowser",
            "mttbrowser",
            "mqqOpensdkSSoLogin",
            "mqqopensdkapiV2",
            "mqqopensdkapiV3",
            "mqqopensdkapiV4",
            "wtloginmqq2",
            "mqzone",
            "mqzoneopensdk",
            "mqzoneopensdkapi",
            "mqzoneopensdkapi19",
            "mqzoneopensdkapiV2",
            "mqqapiwallet",
            "mqqopensdkfriend",
            "mqqopensdkdataline",
            "mqqgamebindinggroup",
            "mqqopensdkgrouptribeshare",
            "tencentapi.qq.reqContent",
            "tencentapi.qzone.reqContent",
        ],
        "CFBundleURLTypes" :
        [
            {
                "CFBundleTypeRole":"Editor",
                "CFBundleURLSchemes":["tencent{QQ_APPID}"]
            }
        ]
    },
}

[info] {QQ_APPID} 를 요청한 QQ APPID 로 변경

자세한 사항은 Universal Link 설명 을 참조하십시오

3、 기능 설명

3 기능 설명

QQ 친구 와 공유 기능 과 관련하여 Feiying 시스템 에서 요청 가능한 권한은 다음과 같습니다:

  • 공유의 작은 꼬리
  • 백 엔드 공유하기
  • 관계망

QQ 플랫폼 로직, QQ 클라이언트가 설치되지 않은 상태에서 로그인 시, iOS 에서는 QQ Web 로그인 페이지를 소환하고, Android 는 QQ 다운로드 페이지를 소환합니다. 자세한 사항은 qqconnecthelper(QQ커넥트 및 로그인 문의)으로 문의하십시오.

3.1 로그인 기능

QQ 의 라이선스 로그인 사용과 관련하여 더 자세한 사항은 로그인 모듈 을 참고하십시오

MSDKLogin.Login 을 호출할 때 권한을 부여합니다.

알려진 권한의 목록은 다음과 같습니다:(아무런 권한도 전해지지 않은 경우, Android 는 get_simple_userinfo 권한을 기본으로 사용합니다)

권한 설명
get_simple_userinfo QQ 로그인 권한(MSDK Android 기본 권한)

3.2 친구 기능

QQ 친구에게 메시지 보내기, QQ모멘트로 사진/영상 공유와 관련하여 친구 모듈 을 참고하십시오

1)발송 기능 지원 유형

No. 기능 필수 입력 필드
1 텍스트 발송-팝업(IOS) type(유형)、desc(설명)
2 링크 발송-팝업 type(유형)、link(링크)
3 이미지 발송-팝업 type(유형)、imagePath(이미지 주소)
4 뮤직 발송-팝업 type(유형)、link(링크)
5 애플리케이션 요청-팝업 type(유형)
6 애플리케이션 요청-무음 user(친구 openid)、link(링크)、imagePath(이미지 주소)
7 Ark 메시지 발송 user(친구 openid)、link(링크)、imagePath(이미지 주소)
8 미니프로그램 메시지 발송 type(유형)、desc(abstract description, 일부 기종의 파라미터 오류 기입 안함)、extraJson(미니프로그램 파라미터)

[warning] 주의사항

  1. 텍스트 발송 기능은, iOS 만 지원하며 Android 는 지원하지 않습니다
  2. QQ 의 무음 요청은 사용자가 QQ 모바일 게임 의 서비스계정을 팔로우하고 있어야 합니다. 요청 역시 본 서비스 계정을 통해 발송합니다
  3. 이미지 주소 imagePath 는 온라인 이미지일 수도, 로컬 이미지일 수도 있습니다, 온라인 이미지의 경우, 로컬로 다운로드한 후 발송/공유 가 가능합니다
  4. 미니프로그램 공유 extraJson 파라미터는 mini_appid、mini_path、mini_webpage_url、mini_program_type 를 포함하고 있습니다

  5. 애플리케이션 요청-무음, 확장 필드에서 game_tag 를 추가하여 플랫폼 공유 유형 통계로 활용 가능합니다

    reqInfo.ExtraJson = "{\"game_tag\":\"MSDKGameTag-Unity\"}";
    

2)공유 기능 지원 유형

No. 기능 필수 입력 필드
1 텍스트 공유-팝업 type(유형)、desc(설명)
2 링크 공유-팝업 type(유형)、link(링크)
3 이미지 공유-팝업 type(유형)、imagePath(이미지 주소)
4 비디오 공유-팝업(Android) type(유형)、mediaPath(미디어 주소)
5 뮤직 공유-팝업(IOS) type(유형)、link(링크)
6 비디오 공유-팝업 type(유형)、mediaPath(비디어 주소)
7 미니프로그램 메시지 발송 type(유형)、desc(abstract description, 일부 기종의 파라미터 오류 기입 안함)、extraJson(미니프로그램 파라미터)

[warning] 주의사항

  1. 기타 발송/공유 타입은 모두 지원하지 않습니다
  2. 비디오 공유 기능은, 로컬 비디오 주소 사용을 권장합니다; QQ에서는 비디오 크기를 최대 50M으로 제한하였으며, 기종별 동적 크기에 따라 조정하기를 권장드립니다; MSDK 는 비디오 주소만 비어있는지 확인하고 유효성을 테스트하지 않습니다. 주소가 올바르지 않으면 QQ에서 페이지가 열리고 리턴된 뒤, 사용자에게 공유가 취소됐음을 알립니다.
  3. 뮤직 공유 기능은, IOS 만 지원하며 Android 는 지원하지 않습니다
  4. 이미지 주소 imagePath 는 온라인 이미지일 수도, 로컬 이미지일 수도 있습니다, 온라인 이미지의 경우, 로컬로 다운로드한 후 발송/공유 가 가능합니다
  5. 미니프로그램 공유 extraJson 파라미터는 mini_appid、mini_path、mini_webpage_url、mini_program_type 를 포함하고 있습니다

3)친구 추가

No. 기능 필수 입력 필드
1 친구 추가 user(친구의 MSDK openID)

[warning] 주의사항

  1. 친구 추가 기능, Android 와 iOS 의 로직 불일치: Android QQ SDK 콜백 없는 경우, MSDK 에서 QQ 를 호출하고 바로 성공 콜백을 리턴합니다. 본 성공 콜백은 QQ SDK 호출에 성공했음만을 의미하며 친구 추가 결과가 반드시 성공이라고 할 수는 없습니다; iOS QQ SDK 는 동일한 QQ 리턴 콜백 처리가 되어있으며, MSDK 에서 QQ 호출과 QQ 리턴 후, 리턴 콜백을 획득하여 게임에 전달할 수 있습니다.
  2. 친구 추가의 클라이언트-서버간 콜백 불일치는 QQ 플랫폼의 설계가 다르기 때문에며, 실제 친구 추가에 성공했는지 여부는 상대방이 친구 요청을 받아들였는지에 달렸습니다. 따라서 게임에서 친구 추가 콜백에 관심을 가질 필요가 없습니다.

3.3 그룹 기능

QQ 그룹 기능에는 아래와 같은 사항들이 포함되어 있습니다:그룹 만들기, 기존 그룹에 가입하기, 그룹 상태 획득, 그룹 관계 획득, 그룹 탈퇴, 그룹 연동, 담당자 그룹 만들기 알림, 담당자 그룹 리스트 획득

자세한 사항은 그룹 모듈 을 참조하십시오

3.4 QQ 로 게임 열기

QQ 에서 게임 소환은 현재 다음과 같은 두 가지 방법으로 열기가 가능합니다

  • 사용자가 요청 메시지 클릭으로 열기

  • 게임센터에서 열기

이 두 가지 방법으로 게임 페이지 소환을 하면, MSDK 는 이에 응답하여 QQ 의 파라미터를 extraJson 의 params 필드로 전송하여, 게임은 이곳에서 필드를 획득할 수 있습니다.

데이터 전달 포맷은 다음과 같습니다:

{
  "extraJson": {
    "params": {
      "gamedata": "MSDK",
      "atoken": "9436F9E54343D839C2DFDBAF65672D31",
      "fling_action_key": 2,
      "openid": "92996552B2C33EA7E5412F19C0EBD643",
      "preAct": "QQBrowserActivity",
      "ptoken": "D947F9FBC24F11A542892B25ADD532F9",
      "leftViewText": "리턴",
      "fling_code_key": 204041314,
      "platformdata": "",
      "preAct_time": 1559283567140,
      "launchfrom": "sq_gamecenter",
      "current_uin": "92996552B2C33EA7E5412F19C0EBD643",
      "platform": "qq_m"
    },
    "game_data": "MSDK"
  },
  "methodNameID": 119,
  "retCode": 1013,
  "retMsg": "Need different account alert",
  "ret": -1,
  "msg": ""
}

설명:extraJson 에서 params 의 대응하는 필드, 이름과 내용은 QQ 에서 전달합니다. extraJson 에 있는 game_data 필드는 게임에서 친구 요청을 보낼 때 내용을 채운 것을 그대로 가져오는 것이며, 게임센터에서 게임을 여는 경우, 해당 글자를 해석합니다.

game_data 필드 투명적 전송

var reqInfo = new MSDKFriendReqInfo ();
reqInfo.Link = "http://www.qq.com";
reqInfo.ExtraJson = "{\"game_data\":\"iOS Game Data 테스트 게임 데이터\"}";

유저 시나리오:게임은 초대 메시지 인터페이스를 통해 QQ-app 을 열어 QQ 친구에게 메시지 보낸 뒤, 사용자의 QQ 친구가 메시지를 클릭 시 게임으로 돌아가는 상황

메시지 발송 시, MSDKFriendReqInfo 에서 ExtraJson 에 추가된game_data 의 필드는 메시지를 클릭하여 게임을 열 때, 게임 측에 리턴되는 데이터로 MSDKBaseRet 의 ExtraJson 에 있는 game_data 에 저장됩니다. 이 중 params 는 QQ 의 모든 데이터를 콜백한 것입니다.

{
  "methodNameID": 0,
  "channelID": 2,
  "channel": "QQ",
  "seqID": "11-2B4C94EE-0CC8-4433-A313-1678F57272FA-1585292132-17",
  "extraJson": {
    "params": {
      "openid": "290F941C5F87AA8BB2B77E57565A724F",
      "atoken": "9554C3570DDEBA11F3A90DC9FDDB4A75",
      "platform": "qq_m",
      "platformdata": "",
      "gamedata": "iOS%20Game%20Data%20%E6%88%91%E6%98%AF%E6%B5%8B%E8%AF%95--%3D%3DhelloMSDK",
      "huashan_com_sid": "biz_src_jc_ark"
    },
    "game_data": "iOS Game Data 테스트 게임 데이터"
  }
}
4、연동 opensdk3.3.9 업데이트를 통한및 모바일 Q 미니프로그램 파라미터 전달 기능 지원

4 연동 opensdk3.3.9 업데이트를 통한및 모바일 Q 미니프로그램 파라미터 전달 기능 지원

4.1 미니프로그램 전달 방법

기존 모바일 Q 미니프로그램의 파라미터 전송 방식 
info.extraJson = "{\"mini_appid\":\"1109787314\",\"mini_path\":\"pages/component/pages/launchApp813/launchApp813\",\"mini_webpage_url\":\"www.qq.com\",\"mini_program_type\":3}";

메시지 전달 후, mini_path 뒤에 get 파라미터 추가
info.extraJson = "{\"mini_appid\":\"1109787314\",\"mini_path\":\"pages/component/pages/launchApp813/launchApp813?key1=val2&key3=val4\",\"mini_webpage_url\":\"www.qq.com\",\"mini_program_type\":3}";

4.2 파라미터 통과를 받아들이는지에 관한 사항

메시지를 클릭하여 게임을 열 때, 게임 업무측에 리턴되는 데이터는 Wakeup 콜백함수의 MSDKBaseRe t 의 ExtraJson 에 있는 game_data 에서 JSON 형식의 문자열로 전송됩니다. 또한 channel 필드 구분 채널 정보도 같이 전송됩니다

{
  "methodNameID": 0,
  "channelID": 2,
  "channel": "QQ",
  "seqID": "11-2B4C94EE-0CC8-4433-A313-1678F57272FA-1585292132-17",
  "extraJson": {
    "channel": "QQ",
    "game_data": "{\key1\":\"val2\", \key3\":\"val3\"}"
  }
}

4.3 설정 변경

모바일 Q SDK 는 fileProvider 를 제공해야 하므로 MSDK 모바일 Q 는 AndroidManifest.xml 에 아래 사항 추가하고

 <provider android:authorities="${applicationId}.QQSDKFileProvider"
           android:name="android.support.v4.content.FileProvider"
           android:exported="false"
           android:grantUriPermissions="true" >
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
                       android:resource="@xml/file_paths"/>
</provider>

res/xml 목록에 file_paths.xml 를 추가합니다

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-files-path name="opensdk_external" path="Images/tmp"/>
    <root-path name="opensdk_root" path=""/>
</paths>

프로젝트가 업데이트 할 때, Internal 구축 방식을 사용하는 경우,${applicationId} 매크로에 컴파일 오류가 발생할 수 있으므로, 이 경우에는 반드시 해당 매크로를 패키지 네임으로 변경하여야 합니다

fileProvider 가 이미지 공유에 영향을 끼칠 수 있으므로, 프로젝트팀은 접속 시, 모든 이미지의 공유가 제대로 되었는지 반드시 점검하여 업데이트 후에도 기능적으로 사용할 수 있도록 권장드립니다

4.4 주의사항

  • qq 미니프로그램이 App 을 열 때, 파라미터가 전송되지 않는다면 WakeupEvent 콜백도 발생하지 않습니다



Copyright © 2025 MSDK.
All rights reserved.

results matching ""

    No results matching ""