Unity借助Eclipse导Jar包接入QQ登录SDK

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37058219/article/details/83782982

首先还是Unity大知识点列表

然后开始边做边记录吧!

申请QQ互联开发者身份

链接:https://connect.qq.com/index.html

需要实名认证,提交手持身份证照片,申请后等待审核

大约三天左右,等审核通过后

进入应用管理界面,在创建移动应用

填写应用类型,名称简介,创建应用

填写Android或IOS开发信息,选择Android开发信息

设置包名与签名,签名可通过腾讯提供的签名获取工具获取

安装包名称可以自定义,格式位com.公司或开发者字母名称.产品名称 例如com.nekotail.catplayingchess

安装包签名步骤如下

新建空的Unity工程

设置PlayerSetting,设置公司名与产品名以及包名,打包成apk,安装到安卓机上

点击 签名获取工具,扫二维码下载AppManager.apk,安装后运行

找到后查看到我们的空apk的包名和对应的签名,将签名填写到Android开发信息中

然后上传自定义logo图片,分辨率要按要求设置,然后提交申请,等待1-2天的审核时间

审核成功后可以上QQ互联官网自己的管理中心看到我们审核成功的应用

这个时候就有了应用的APP ID与APP Key。

目前认证过程结束。

下载QQ登录SDK

新开工程,使用Unity版本2017.4.1f1。

下载地址:http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD

下载android版本SDK,得到一个.7z压缩包,解压后目录

安装Eclipse IDE

省略

导出Jar包

创建Eclipse的安卓应用工程

包名要与Unity工程包名以及QQ互联开放平台中应用设置的包名一致

持续Next,Finish

将Unity安装目录里的classes.jar与qq登录sdk中的jar包放入新开的安卓工程目录的libs目录下

放入libs目录下

然后分别右键两个jar包 BuildPath - Add to build path

更改MainActivity.java

package com.nekotail.catplayingchess;

import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.unity3d.player.UnityPlayerActivity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends UnityPlayerActivity {

	private Tencent mTencent;
	private IUiListener loginListener = new BaseUiListener();
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
//		setContentView(R.layout.activity_main);
//		mTencent = Tencent.createInstance("101504166", this.getApplicationContext());
	}
	
	
	//QQ登录接口
	public void qqLogin() {
		//第一个参数为qq互联开放平台的应用APPID,此处用101012345代替
		mTencent = Tencent.createInstance("101012345", this.getApplicationContext());
		if (!mTencent.isSessionValid()) {
			mTencent.login(this, "all", loginListener);
		}
	}
	
	//QQ注销接口
	public void qqLogout(){
		mTencent.logout(this);
	}
	
	
	//实现回掉IUiListener
	private class BaseUiListener implements IUiListener{

		@Override
		public void onCancel() {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onComplete(Object arg0) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onError(UiError arg0) {
			// TODO Auto-generated method stub
			
		}
		
	}
	
	
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		mTencent.onActivityResult(requestCode, resultCode, data);
		super.onActivityResult(requestCode, resultCode, data);
	}
}

配置AndroidMinifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nekotail.catplayingchess"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="25" />

    <uses-permission android:name="com.permission.INTERNET"/>
    <uses-permission android:name="com.permission.ACCESS_NETWORK_STATE"/>
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <!-- QQ登录配置 start -->
        <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:noHistory="true"
            android:launchMode="singleTask">
            <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="tencent101012345"/> <!-- 此处填写tencentAPPID -->
            </intent-filter>
        </activity>
        <activity
       		android:name="com.tencent.connect.common.AssistActivity"
       		android:configChanges="orientation|keyboardHidden"
       		android:screenOrientation="behind" 
			android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <!-- QQ登录配置end -->
    </application>

</manifest>

右键工程根目录 -Export - JAR file

选中src ,res和llibs目录,去除classes.jar 然后Finish 

OK

在设置的路径找到jar包

Unity的配置

这里警告,继续使用原工程,使用新工程将导致包签名更改,将会出现只能QQ互联的QQ号可能登录,其他QQ号无法授权登录成功。

如果原工程丢失,可以修改包签名

创建Plugins/Android/libs目录,将创建好的jar包以及qq登录sdk的jar包放进目录里

将安卓工程里的res目录复制到Plugins/Android目录下

将安卓工程里的AndroidMinifest.xml复制到Plugins/Android目录下

设置导入平台设置

新建场景,创建UGUI Button,新建脚本QQLogin.cs挂载在button对象上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class QQLogin : MonoBehaviour {

    private Button loginButton;

    private void Awake()
    {
        loginButton = GetComponent<Button>();
        loginButton.onClick.AddListener(() => { OnLoginBtnClick(); });
    }


    private void OnLoginBtnClick()
    {
        AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        activity.Call("qqLogin");
    }
}

设置PlayerSetting

打包成apk,安装到真机上进行测试

Unity集成QQ登录SDK问题列表

猜你喜欢

转载自blog.csdn.net/qq_37058219/article/details/83782982
今日推荐