<?xml version="1.0" encoding="utf-8"?>
|
<!--GearVR plugin additions-->
|
<root xmlns:android="http://schemas.android.com/apk/res/android">
|
<!-- init section is always evaluated once per architecture -->
|
<trace enable="true"/>
|
<init>
|
<log text="Taptap APL init"/>
|
</init>
|
<proguardAdditions>
|
<insert>
|
-keep public class com.tds.common.** {*;}
|
-keep public class com.tapsdk.** {*;}
|
-keep class com.tds.** {*;}
|
|
# proguard.cfg
|
|
-keepattributes Signature
|
-dontwarn com.jcraft.jzlib.**
|
-keep class com.jcraft.jzlib.** { *;}
|
|
-dontwarn sun.misc.**
|
-keep class sun.misc.** { *;}
|
|
-dontwarn com.alibaba.fastjson.**
|
-keep class com.alibaba.fastjson.** { *;}
|
|
-dontwarn org.ligboy.retrofit2.**
|
-keep class org.ligboy.retrofit2.** { *;}
|
|
-dontwarn io.reactivex.rxjava2.**
|
-keep class io.reactivex.rxjava2.** { *;}
|
|
-dontwarn sun.security.**
|
-keep class sun.security.** { *; }
|
|
-dontwarn com.google.**
|
-keep class com.google.** { *;}
|
|
-dontwarn com.avos.**
|
-keep class com.avos.** { *;}
|
|
-dontwarn cn.leancloud.**
|
-keep class cn.leancloud.** { *;}
|
|
-keep public class android.net.http.SslError
|
-keep public class android.webkit.WebViewClient
|
|
-dontwarn android.webkit.WebView
|
-dontwarn android.net.http.SslError
|
-dontwarn android.webkit.WebViewClient
|
|
-dontwarn android.support.**
|
|
-dontwarn org.apache.**
|
-keep class org.apache.** { *;}
|
|
-dontwarn org.jivesoftware.smack.**
|
-keep class org.jivesoftware.smack.** { *;}
|
|
-dontwarn com.loopj.**
|
-keep class com.loopj.** { *;}
|
|
-dontwarn com.squareup.okhttp.**
|
-keep class com.squareup.okhttp.** { *;}
|
-keep interface com.squareup.okhttp.** { *; }
|
|
-dontwarn okio.**
|
|
-dontwarn org.xbill.**
|
-keep class org.xbill.** { *;}
|
|
-keepattributes *Annotation*
|
|
</insert>
|
</proguardAdditions>
|
<androidManifestUpdates>
|
|
<!--
|
旧版 Android 额外配置
|
如果 targetSdkVersion < 29,还需要添加如下配置:
|
-->
|
<!-- <addAttribute -->
|
<!-- tag="manifest" -->
|
<!-- name="xmlns:tools" -->
|
<!-- value="http://schemas.android.com/tools" />-->
|
<!-- <addAttribute -->
|
<!-- tag="application " -->
|
<!-- name="tools:remove" -->
|
<!-- value="android:requestLegacyExternalStorage" />-->
|
|
<!-- 广告 SDK 已添加的权限 -->
|
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
<!-- 为了获取更精准的推送数据、建议游戏加上的权限 -->
|
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
<uses-permission android:name="android.permission.BLUETOOTH"/>
|
<!-- targetVersion 31 及以上 建议游戏加上这个权限 -->
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT"/>
|
<!-- 为了获取更好的广告体验,建议游戏加上以下权限来获取用户信息 -->
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
|
<!-- 加上下列权限可以提高广告的转化率 -->
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
</androidManifestUpdates>
|
<proguardAdditions>
|
<insert>
|
</insert>
|
</proguardAdditions>
|
|
<resourceCopies>
|
<copyDir
|
src = "$S(PluginDir)/../../ThirdParty/"
|
dst = "$S(BuildDir)/libs/" />
|
|
<copyDir
|
src="$S(PluginDir)/../../ThirdParty/Android/Java/"
|
dst="$S(BuildDir)/src/com/leopard/taptap" />
|
</resourceCopies>
|
<gradleCopies>
|
</gradleCopies>
|
|
<buildGradleAdditions>
|
<insert>
|
<![CDATA[
|
repositories {
|
flatDir {
|
dirs 'src/main/libs'
|
}
|
}
|
dependencies {
|
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
|
implementation 'io.reactivex.rxjava2:rxjava:2.0.1'
|
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
|
implementation 'androidx.appcompat:appcompat:1.0.0'
|
implementation 'androidx.annotation:annotation:1.0.0'
|
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
|
implementation "com.github.bumptech.glide:glide:4.9.0"
|
implementation 'com.google.android.material:material:1.0.0'
|
implementation 'androidx.recyclerview:recyclerview:1.0.0'
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
|
implementation 'cn.leancloud:storage-android:8.2.19' // 数据存储
|
implementation 'cn.leancloud:realtime-android:8.2.19' // 即时通讯
|
implementation(name : 'TapAD_3.16.3.23', ext:'aar')
|
implementation(name : 'TapBootstrap_3.24.0', ext:'aar')
|
implementation(name : 'TapCommon_3.24.0', ext:'aar')
|
implementation(name : 'TapLogin_3.24.0', ext:'aar')
|
implementation(name : 'TapDB_3.24.0', ext:'aar')
|
}
|
]]>
|
</insert>
|
</buildGradleAdditions>
|
|
<gameActivityImportAdditions>
|
<insert>
|
<![CDATA[
|
// taptap start
|
import com.tapsdk.tapad.AdRequest;
|
import com.tapsdk.tapad.CustomUser;
|
import com.tapsdk.tapad.TapAdConfig;
|
import com.tapsdk.tapad.TapAdCustomController;
|
import com.tapsdk.tapad.TapAdLocation;
|
import com.tapsdk.tapad.TapAdManager;
|
import com.tapsdk.tapad.TapAdNative;
|
import com.tapsdk.tapad.TapAdSdk;
|
import com.tapsdk.tapad.TapRewardVideoAd;
|
import android.util.Log;
|
// taptap end
|
]]>
|
</insert>
|
</gameActivityImportAdditions>
|
<gameActivityClassAdditions>
|
<insert>
|
<![CDATA[
|
public native void OnActivitySaveInstanceState();
|
|
public void Logout(){
|
com.leopard.taptap.TapNative.Logout();
|
}
|
public void TapDBTraceEvent(final String eventName,final String jsonObject) {
|
// 委托主线程调用
|
runOnUiThread(
|
new Runnable() {
|
public void run() {
|
com.leopard.taptap.TapNative.TapDBTraceEvent(eventName,jsonObject);
|
}
|
});
|
}
|
public void InitTapDB(
|
final String clientId,
|
final String clientToken,
|
final String serverUrl,
|
final String gameChannel,
|
final String gameVersion
|
){
|
android.util.Log.d("Leopard","InitTapDB ==>> clientId:" + clientId + ",clientToken" + clientToken + ",serverUrl" + serverUrl);
|
// 委托主线程调用
|
runOnUiThread(
|
new Runnable() {
|
public void run() {
|
com.leopard.taptap.TapNative.InitTapDB(clientId,clientToken,serverUrl,gameChannel,gameVersion);
|
}
|
});
|
}
|
|
public boolean CheckLogin() {
|
return com.leopard.taptap.TapNative.CheckLogin();
|
}
|
|
public void InitLogin(final String clientId,final String clientToken,final String serverUrl){
|
android.util.Log.d("Leopard","InitLoginStart ==>> clientId:" + clientId + ",clientToken" + clientToken + ",serverUrl" + serverUrl);
|
runOnUiThread(
|
new Runnable() {
|
public void run() {
|
com.leopard.taptap.TapNative.InitLogin(clientId, clientToken, serverUrl);
|
}
|
});
|
}
|
|
public void Login(){
|
android.util.Log.d("Leopard","LoginStart");
|
com.leopard.taptap.TapNative.Login();
|
}
|
|
public String GetCurrentProfile(){
|
android.util.Log.d("Leopard","GetCurrentProfile");
|
return com.leopard.taptap.TapNative.GetCurrentProfile();
|
}
|
|
|
public void tapADNRequestPermissionIfNecessary() {
|
TapAdManager.get().requestPermissionIfNecessary(this);
|
android.util.Log.d("Leopard","RequestPermissionIfNecessary");
|
}
|
|
public void tapADNInit(
|
int mediaID,
|
String mediaName,
|
String mediaKey,
|
boolean enableDebug,
|
int avatarLevel
|
) {
|
android.util.Log.d("Leopard","tapADNInit:mediaName->" + mediaName + ",mediaKey:" + mediaKey);
|
final TapAdConfig config = new TapAdConfig.Builder()
|
.withMediaId(mediaID) // 必选参数。为 TapADN 注册的媒体 ID
|
.withMediaName(mediaName) // 必选参数。为 TapADN 注册的媒体名称
|
.withMediaKey(mediaKey) // 必选参数。媒体密钥,可以在TapADN后台查看
|
.withMediaVersion("1") // 必选参数。默认值 "1"
|
.withGameChannel("taptap2") // 必选参数,渠道
|
// .withTapClientId("0RiAlMny7jiz086FaU")
|
.enableDebug(enableDebug)
|
.withCustomController(new TapAdCustomController() {
|
@Override
|
public boolean isCanUseLocation() {
|
return true;
|
}
|
|
@Override
|
public TapAdLocation getTapAdLocation() {
|
double longitude = 0;
|
double latitude = 0;
|
double accuracy = 0;
|
return new TapAdLocation(longitude, latitude, accuracy);
|
}
|
|
@Override
|
public boolean isCanUsePhoneState() {
|
return super.isCanUsePhoneState();
|
}
|
|
@Override
|
public String getDevImei() {
|
return super.getDevImei();
|
}
|
|
@Override
|
public boolean isCanUseWifiState() {
|
return super.isCanUseWifiState();
|
}
|
|
@Override
|
public boolean isCanUseWriteExternal() {
|
return super.isCanUseWriteExternal();
|
}
|
|
@Override
|
public String getDevOaid() {
|
// if (inputOaidEditText != null && inputOaidEditText.getText() != null) {
|
// return inputOaidEditText.getText().toString();
|
// }
|
return "asdf12345";
|
}
|
|
@Override
|
public boolean alist() {
|
return super.alist();
|
}
|
|
@Override
|
public boolean isCanUseAndroidId() {
|
return true;
|
}
|
|
@Override
|
public CustomUser provideCustomUser() {
|
return new CustomUser.Builder()
|
.withRealAge(1) // 年龄
|
.withRealSex(1) // 性别 0:男 1:女
|
.withAvatarSex(1) // 角色性别 0:男 1:女
|
.withAvatarLevel(1) // 角色等级
|
.withNewUserStatus(1) // 是否新玩家 0:否;1:是
|
.withPayedUserStatus(0) // 是否付费用户 0:否;1:是
|
.withBeginMissionFinished(1) // 是否通过新手教程 0:否 1:是
|
.withAvatarPayedToolCnt(0) // 角色当前付费道具数量
|
.build();
|
}
|
})
|
.build();
|
TapAdSdk.init(this,config);
|
android.util.Log.d("Leopard","TapAdSdkInitOver");
|
}
|
|
public TapAdNative tapAdNative;
|
public TapRewardVideoAd lastTapRewardVideoAd;
|
public native void nativeRewardRequestOver();
|
public boolean isRewardCached(){
|
return lastTapRewardVideoAd != null;
|
}
|
public void tapADNRequestRewardAD(
|
int spaceID, // 广告后台获取广告位id
|
String rewardName, // 奖品名称
|
int rewardAmount // 奖品数量
|
){
|
android.util.Log.e("Leopard","tapADNInit:spaceID->" + spaceID);
|
tapAdNative = TapAdManager.get().createAdNative(this);
|
AdRequest adRequest = new AdRequest.Builder()
|
.withSpaceId(spaceID)
|
.withExtra1("{}")
|
.withUserId("123")
|
.withRewordName(rewardName)
|
.withRewordAmount(rewardAmount)
|
.build();
|
tapAdNative.loadRewardVideoAd(adRequest, new TapAdNative.RewardVideoAdListener() {
|
@Override
|
public void onError(int code, String message) {
|
android.util.Log.e("Leopard","广告获取失败" + message);
|
}
|
|
@Override
|
public void onRewardVideoAdLoad(TapRewardVideoAd rewardVideoAd) {
|
tapADNPlayRewardAD();
|
}
|
|
@Override
|
public void onRewardVideoCached(TapRewardVideoAd rewardVideoAd) {
|
android.util.Log.d("Leopard","广告获取成功");
|
lastTapRewardVideoAd = rewardVideoAd;
|
GameActivity.this.nativeRewardRequestOver();
|
}
|
});
|
}
|
public native void nativeRewardAdPlayOver();
|
public void tapADNPlayRewardAD(){
|
if (lastTapRewardVideoAd != null){
|
lastTapRewardVideoAd.setRewardAdInteractionListener(new TapRewardVideoAd.RewardAdInteractionListener() {
|
@Override
|
public void onAdShow() {
|
// 激励广告已显示
|
}
|
|
@Override
|
public void onAdClose() {
|
// 激励广告已经关闭
|
}
|
|
@Override
|
public void onVideoComplete() {
|
// 视频播放结束
|
}
|
|
@Override
|
public void onVideoError() {
|
// 视频出错
|
}
|
|
@Override
|
public void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName, int code, String msg) {
|
// 激励任务已完成,游戏可以选择在此时进行玩家奖励,或者进一步通过 s2s 的流程来确认是否可以对当前玩家发放奖励
|
android.util.Log.d("Leopard","广告播放完毕!");
|
GameActivity.this.nativeRewardAdPlayOver();
|
}
|
|
@Override
|
public void onSkippedVideo() {
|
// 激励广告中玩家点击了跳过视频的按钮
|
}
|
});
|
lastTapRewardVideoAd.showRewardVideoAd(this);
|
}
|
else{
|
android.util.Log.e("Leopard","没有缓存任何的广告");
|
}
|
}
|
]]>
|
</insert>
|
</gameActivityClassAdditions>
|
|
<gameActivityOnCreateAdditions>
|
<insert>
|
<![CDATA[
|
com.leopard.taptap.TapNative.Init(this);
|
]]>
|
</insert>
|
</gameActivityOnCreateAdditions>
|
<gameActivityOnSaveInstanceStateAdditions>
|
<insert>
|
<![CDATA[
|
OnActivitySaveInstanceState();
|
android.util.Log.d("Leopard","OnActivitySaveInstanceState");
|
]]>
|
</insert>
|
</gameActivityOnSaveInstanceStateAdditions>
|
</root>
|