700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Unity】中接入QQ官方SDK实现QQ登录(Android环境) 新手教程

【Unity】中接入QQ官方SDK实现QQ登录(Android环境) 新手教程

时间:2021-12-17 06:54:53

相关推荐

【Unity】中接入QQ官方SDK实现QQ登录(Android环境) 新手教程

作为一个新手做准备工作的时候,在网上找了很多例子,发现其中有很多例子是有错误的,各种花式报错,好在最后终于成功了,在此记录一下自己接入QQSDK的过程。

前期准备

QQ官方SDK下载

地址:http://wiki./wiki/mobile/SDK%E4%B8%8B%E8%BD%BD版本为:Android_SDK_V3.3.3Unity5.6.1f1以上版本 64位

当然我也不清楚5.6.1f1以下会不会出错,毕竟我没试过。eclipse下载

地址:/downloads/ 本人下载的是最新版,Version: Oxygen.3a Release (4.7.3a) 64位*ADT下载

地址:http://tools.android-/index.php/adt-bundle-plugin 本人下载的是ADT-23.0.6(64位) 压缩包下载后不要解压android SDK

地址:http://tools.android-/index.php/sdk android SDK下载后,还需要 一系列的配置下载才能使用,由于本人是新人,这里不做讲解,如果有不会的同学可以使用我的android SDK (稍后补上)JDK下载

地址:http://jdk.android-/ 版本最好使用1.8以上 1.9以下 同样是64位

第一步

安装JDK,并配置环境变量,这里分享个链接给大家作参考/article/3ea51489e1c2b752e61bbad0.html.

第二步

安装eclipse,安装ADT插件和android SDK插件。

从eclipse官网上下载的eclipse-inst-win64.exe只是一个安装程序。双击后选择第二个Eclipse IDE for Java EE Developers.

接着选择安装目录 ,点击INSTALL

安装完成后点击 LAUNCH 进入下面这个画面,给eclipse选择一个工程存放目录后,点击Launch.

进入下面这个画面后,我们要给eclipse安装ADT插件。

点击Help->Install New Software…

ADT可以在线安装,也可以离线安装。但是在线安装需要科学上网。所以这里我们选择离线安装,就要用到之前我们下载的ADT插件。

点击Add,弹出Add Repository界面,Name可以随便取名字,而Location则点击Archive..从目录中找到并选择ADT压缩包。

点击OK后,在软件对话框中,选中”Developer Tools”复选框,然后点击”Next”。 这时候关键的一点,点击Next后,如果下面的进度条一直不动,说明它还是进行了在线安装,那么就需要断网后再点击Next。

点击Next

同意协议后,点击Finish。

这里会弹出一个提醒,点击Install anyway,然后要求你重启eclipse,点击重启。

Eclipse重启之后会根据目录的位置智能地和它相同目录下Android sdk进行关联,如果Eclipse没有自动关联Android sdk的安装目录,那么就会弹出如下图所示的提示信息,要求我们设置Android SDK的安装目录

点击【Open Preferences】按钮,在弹出面板中就会看到Android设置项,填上安装的SDK路径,则会出现刚才在SDK中安装的各平台包,按OK完成配置。

到此eclipse的安装与配置已经完成了。

第三步

创建android 工程:关闭Welcome页面。点击New->Peoject…选择Android->Android Application Project 点击Next.

Application Name和Project Name可以随便起名字。但是Package Name(包名)要跟Unity里面写的一样。下面SDK的选择最好也要跟Unity一样。一直点击Next,最后点击Finish.

然后将android SDK里面的open_sdk_r6008_lite.jar放入android项目中的libs文件夹中,然后右击它,选择Build Path->Add to Build Path。

因为需要跟Unity交互,我们需要Unity的jar文件,在Unity安装目录下找到它,放入android项目中的libs文件夹中,然后右击它,选择Build Path->Add to Build Path。

现在我们开始配置AndroidManifest.xml文件,里面内容都是参考QQ开放平台里面的案例,这里就不做解释了。

<manifest xmlns:android="/apk/res/android"package="com.zsj.unitygame"android:versionCode="1"android:versionName="1.0" ><uses-sdk android:minSdkVersion="21"android:targetSdkVersion="27" /><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" /><!-- SDK2.1新增获取用户位置信息 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.GET_TASKS"/><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><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" />//这里填写的是QQ开发平台上自己申请的APPID。<data android:scheme="tencent100371282" /></intent-filter></activity><activity android:name="com.mon.AssistActivity"android:configChanges="orientation|keyboardHidden|screenSize"android:theme="@android:style/Theme.Translucent.NoTitleBar" /></application></manifest>

AndroidManifest.xml文件配置完成后,开始编写Java代码,代码方面也是参考QQ开放平台的,这里不做解释了,需要的同学请自己去QQ开放平台查看API。

//添加头文件import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.os.SystemClock;import android.text.TextUtils;import android.util.Log;import android.view.Menu;import android.widget.Toast;import org.json.JSONObject;import com.tencent.connect.UnionInfo;import com.tencent.connect.UserInfo;import com.mon.Constants;import com.tencent.tauth.IUiListener;import com.tencent.tauth.UiError;import com.tencent.tauth.Tencent;import com.unity3d.player.UnityPlayer;import com.unity3d.player.UnityPlayerActivity;//这里要注意把Activity改成UnityPlayerActivitypublic class MainActivity extends UnityPlayerActivity {public static Tencent mTencent;public SharedPreferences sharedPrefrences;public Editor editor;public Context context; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.activity_main);}//登录方法public void LoginAndSend(){//定义一个对象,里面的第一个参数是自己在QQ开放平台上申请的APPID。mTencent = Tencent.createInstance("100371282",this.getApplicationContext());if (!mTencent.isSessionValid()){ mTencent.login(this, "all", loginListener);} }public static void initOpenidAndToken(JSONObject jsonObject) {try {String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)&& !TextUtils.isEmpty(openId)) {mTencent.setAccessToken(token, expires);mTencent.setOpenId(openId);}} catch(Exception e) {}}IUiListener loginListener = new BaseUiListener() {@Overrideprotected void doComplete(JSONObject values) {initOpenidAndToken(values); }};@Override //这段代码非常重要,不加的话无法获取回调protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == Constants.REQUEST_LOGIN ||requestCode == Constants.REQUEST_APPBAR) {Tencent.onActivityResultData(requestCode,resultCode,data,loginListener);}super.onActivityResult(requestCode, resultCode, data);}private class BaseUiListener implements IUiListener {@Overridepublic void onComplete(Object response) {if (null == response) {return;}JSONObject jsonResponse = (JSONObject) response;if (null != jsonResponse && jsonResponse.length() == 0) {return;}doComplete((JSONObject) response);}protected void doComplete(JSONObject values) {}@Overridepublic void onError(UiError e) {}@Overridepublic void onCancel() {}}}

接着我们要从eclipse中导出jar文件。选择整个项目,右击点击,在目录中选择Export,弹出选框后选择java->JAR file.点击继续

清除所有选项,只选择src,libs,res三个文件夹,同时libs文件中classes要取消掉,不然在unity里面打包会报错。在下面选择打包地址和名字,然后点击Finsih,获得一个test.jar文件。

第四步

在unity里面创建一个安卓项目。

在Assests 中新建Floder命名为“Plugins”,在“Plugins”文件夹中新建Floder命名为“Android” ,在“Android”文件夹新建Floder命名为”bin”,并将刚刚导出的test.ja文件和open_sdk_r6008_lite.jar文件放入此文件夹中。再将Eclipse 的Android项目中复制res文件夹和AndroidManifest.xml一并放入“Android”文件夹中。

在unity中创建一个脚本,并挂在摄像机上。脚本内容如下。

using UnityEngine;using System.Collections;public class test : MonoBehaviour{// Use this for initializationvoid Start(){}// Update is called once per framevoid Update(){if (Input.GetMouseButtonDown(0)) //在Unity中左键一点击,就执行android中的LoginAndSend方法{AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");jo.Call("LoginAndSend");}}}

配置Unity安卓环境,要保证跟 eclipse中创建的安卓环境一样。

完成以上步骤后,就可以开始打包APK文件了。在模拟器中安装。

点击一下鼠标,拉取授权~~~~

成功了拉取到授权~~~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。