feat(channel): 同步渠道构建配置
This commit is contained in:
@@ -35,7 +35,7 @@
|
||||
</activity>
|
||||
|
||||
<!-- 渠道标识,ChannelManager 读取此值以识别 Flexion 渠道 -->
|
||||
<meta-data android:name="CHANNEL" android:value="Flexion" />
|
||||
<meta-data android:name="com.arkgame.ft.channel" android:value="Flexion" />
|
||||
|
||||
<!-- 覆盖 gasdk 与 tuyoosdk 的 MainProcessName 冲突 -->
|
||||
<meta-data android:name="com.sensorsdata.analytics.android.MainProcessName"
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
public class ChannelEntry {
|
||||
|
||||
public static final String CHANNEL = "Flexion";
|
||||
|
||||
public static SDKManager.IChannelSDKAdapter createSDKAdapter() {
|
||||
return new FlexionSDKAdapter();
|
||||
}
|
||||
|
||||
|
||||
// Flexion provides price in micros and currency code, so no normalization needed
|
||||
// 支付的变化,可能会修改这里
|
||||
public static String normalizeSkuList(String msg) {
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
//public SDKExtBuilder;
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
public class ConfigManager {
|
||||
// Common SDK parameters
|
||||
public static int SDK_APPID = 20587;
|
||||
public static String SDK_GAMEID = "20587";
|
||||
public static String SDK_PROJECTID = "20587";
|
||||
public static String SDK_CLOUDID = "128";
|
||||
public static String SDK_CLIENTID = "Android_5.00_tyGuest,facebook.googleplay.0-hall20587.flexion.FishingMaster";
|
||||
|
||||
public static String SDK_LOGIN_SERVER_URL = "https://128-hwsfsdk-sdk-online01.qijihdhk.com";
|
||||
|
||||
// FCM (anti-addiction system)
|
||||
public static String FCM_NAMESPACE = "128";
|
||||
public static String FCM_IAM_HOST = "tcp://fcmtcp.tuyoo.com:3563";
|
||||
public static String FCM_ANTISERVERURL = "https://fcmapi.tuyoo.com";
|
||||
|
||||
// Unity Facade callback names
|
||||
public static final String UNITY_FACADE_NAME = "TYSdkFacade";
|
||||
public static final String LOGIN_CALLBACK_FUNCTION_NAME = "LoginResult";
|
||||
public static final String LINKACCOUT_CALLBACK_FUNCTION_NAME = "LinkAccoutResult";
|
||||
public static final String CHANGELINK_CALLBACK_FUNCTION_NAME = "ChangeLinkAccountResult";
|
||||
public static final String CHECKLINK_CALLBACK_FUNCTION_NAME = "CheckLinkResult";
|
||||
public static final String PAY_CALLBACK_FUNCTION_NAME = "PayResult";
|
||||
public static final String PAY_TYPE_CALLBACK_FUNCTION_NAME = "SKUListResult";
|
||||
public static final String FCM_NOTICE_FUNCTION_NAME = "FCMCallback";
|
||||
public static final String FCM_REALNAME_CALLBACK_FUNCTION_NAME = "RealNameCallback";
|
||||
public static final String INIT_CALLBACK_FUNCTION_NAME = "InitResult";
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.unity3d.player;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.flexionmobile.ddpx.listener.ConnectionStateListener;
|
||||
@@ -34,13 +37,14 @@ import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
public class FlexionSDKAdapter implements
|
||||
SDKManager.IChannelSDKAdapter,
|
||||
public class FlexionAdapter extends ChannelAdapterBase implements
|
||||
SDKManager.IPaymentAdapter,
|
||||
SDKManager.IProductQueryAdapter,
|
||||
SDKManager.IPendingPurchaseAdapter,
|
||||
SDKManager.IBillingLifecycleAdapter {
|
||||
private static final String TAG = "FlexionSDKAdapter";
|
||||
SDKManager.IBillingLifecycleAdapter,
|
||||
SDKManager.IChannelInfoAdapter,
|
||||
SDKManager.IReviewAdapter {
|
||||
private static final String TAG = "FlexionAdapter";
|
||||
private static final int FLX_INIT_MAX_ATTEMPTS = 3;
|
||||
private static final int QUERY_PURCHASES_SUCCESS_CODE = 5000;
|
||||
private static BillingService billingService;
|
||||
@@ -64,6 +68,10 @@ public class FlexionSDKAdapter implements
|
||||
void run(BillingService service);
|
||||
}
|
||||
|
||||
private static class Config {
|
||||
public String SDK_CLIENTID = "Android_5.00_tyGuest,facebook.googleplay.0-hall20587.flexion.FishingMaster";
|
||||
}
|
||||
|
||||
private static class PendingBillingOperation {
|
||||
final String operation;
|
||||
final BillingReadyOperation onReady;
|
||||
@@ -91,10 +99,10 @@ public class FlexionSDKAdapter implements
|
||||
};
|
||||
|
||||
@Override
|
||||
public void init(Activity activity) {
|
||||
Log.i(TAG, "[FLX-INIT] adapter init flexionInitialized=" + flexionInitialized
|
||||
+ " flexionScreensStarted=" + flexionScreensStarted
|
||||
+ " flexionScreensShown=" + flexionScreensShown);
|
||||
public void init() {
|
||||
// Log.i(TAG, "[FLX-INIT] adapter init flexionInitialized=" + flexionInitialized
|
||||
// + " flexionScreensStarted=" + flexionScreensStarted
|
||||
// + " flexionScreensShown=" + flexionScreensShown);
|
||||
activity.runOnUiThread(() -> {
|
||||
SDKAPI.getIns().lightModeEnable();
|
||||
if (ensureTuYooSdkInitialized(activity)) {
|
||||
@@ -110,12 +118,12 @@ public class FlexionSDKAdapter implements
|
||||
|
||||
private static boolean ensureTuYooSdkInitialized(Activity activity) {
|
||||
if (tuyooSdkInitialized) {
|
||||
Log.i(TAG, "[FLX-INIT] TuYoo SDK already initialized, skip SDKAPI.init");
|
||||
// Log.i(TAG, "[FLX-INIT] TuYoo SDK already initialized, skip SDKAPI.init");
|
||||
return true;
|
||||
}
|
||||
|
||||
try {
|
||||
Log.i(TAG, "[FLX-INIT] TuYoo SDK init start");
|
||||
// Log.i(TAG, "[FLX-INIT] TuYoo SDK init start");
|
||||
SDKAPI.getIns().init(new InitParam.Builder()
|
||||
.withActivity(activity)
|
||||
.withAppId(ConfigManager.SDK_APPID)
|
||||
@@ -125,7 +133,7 @@ public class FlexionSDKAdapter implements
|
||||
SDKAPI.getIns().onActivityStart(activity);
|
||||
SDKAPI.getIns().onActivityResume(activity);
|
||||
tuyooSdkInitialized = true;
|
||||
Log.i(TAG, "[FLX-INIT] TuYoo SDK init success");
|
||||
// Log.i(TAG, "[FLX-INIT] TuYoo SDK init success");
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "TuYoo SDK init failed, skip FLX init: " + e);
|
||||
@@ -142,12 +150,12 @@ public class FlexionSDKAdapter implements
|
||||
return;
|
||||
}
|
||||
|
||||
Log.i(TAG, "[FLX-INIT] FLX.init start attempt=" + attempt + "/" + FLX_INIT_MAX_ATTEMPTS);
|
||||
// Log.i(TAG, "[FLX-INIT] FLX.init start attempt=" + attempt + "/" + FLX_INIT_MAX_ATTEMPTS);
|
||||
try {
|
||||
FLX.init(activity, (initCode, initMsg) -> {
|
||||
Log.i(TAG, "[FLX-INIT] FLX.init result=" + initCode
|
||||
+ " msg=" + initMsg
|
||||
+ " attempt=" + attempt + "/" + FLX_INIT_MAX_ATTEMPTS);
|
||||
// Log.i(TAG, "[FLX-INIT] FLX.init result=" + initCode
|
||||
// + " msg=" + initMsg
|
||||
// + " attempt=" + attempt + "/" + FLX_INIT_MAX_ATTEMPTS);
|
||||
if (initCode == 0) {
|
||||
flexionInitialized = true;
|
||||
notifyFlexionInitResult(true, "ok");
|
||||
@@ -181,7 +189,7 @@ public class FlexionSDKAdapter implements
|
||||
|
||||
private static void showFlexionScreensThenInitBilling(Activity activity) {
|
||||
if (flexionScreensShown) {
|
||||
Log.i(TAG, "[FLX-INIT] showFlexionScreens skipped, already shown");
|
||||
// Log.i(TAG, "[FLX-INIT] showFlexionScreens skipped, already shown");
|
||||
initBillingServiceAfterScreens(activity);
|
||||
return;
|
||||
}
|
||||
@@ -191,21 +199,21 @@ public class FlexionSDKAdapter implements
|
||||
return;
|
||||
}
|
||||
|
||||
Log.i(TAG, "[FLX-INIT] showFlexionScreens start");
|
||||
// Log.i(TAG, "[FLX-INIT] showFlexionScreens start");
|
||||
flexionScreensStarted = true;
|
||||
FLX.showFlexionScreens(activity, (screenCode, screenMsg) -> {
|
||||
Log.i(TAG, "[FLX-INIT] showFlexionScreens result=" + screenCode
|
||||
+ " msg=" + screenMsg);
|
||||
// Log.i(TAG, "[FLX-INIT] showFlexionScreens result=" + screenCode
|
||||
// + " msg=" + screenMsg);
|
||||
flexionScreensShown = true;
|
||||
initBillingServiceAfterScreens(activity);
|
||||
});
|
||||
}
|
||||
|
||||
private static void initBillingServiceAfterScreens(Activity activity) {
|
||||
Log.i(TAG, "[FLX-INIT] initBillingServiceAfterScreens start");
|
||||
// Log.i(TAG, "[FLX-INIT] initBillingServiceAfterScreens start");
|
||||
initBillingService(activity,
|
||||
() -> {
|
||||
Log.i(TAG, "[FLX-INIT] initBillingServiceAfterScreens success");
|
||||
// Log.i(TAG, "[FLX-INIT] initBillingServiceAfterScreens success");
|
||||
},
|
||||
() -> {
|
||||
Log.w(TAG, "[FLX-INIT] initBillingServiceAfterScreens failed");
|
||||
@@ -230,17 +238,14 @@ public class FlexionSDKAdapter implements
|
||||
try {
|
||||
byte[] decoded = Base64.getDecoder().decode(appInfo);
|
||||
JSONObject json = new JSONObject(new String(decoded, StandardCharsets.UTF_8));
|
||||
Jsonobject json = new JSONObject();
|
||||
JSONObject payload = new JSONObject();
|
||||
String customData = json.optString("customData", "");
|
||||
payload.put("orderId", prodorderId);
|
||||
payload.put("userId", json.optString("userId", ""));
|
||||
payload.put("pfid", json.optString("pfid", ""));
|
||||
payload.put("customData", json.optString("customData", ""));
|
||||
|
||||
// if (!customData.isEmpty()) {
|
||||
// payload.put("customData", parseCustomDataValue(customData));
|
||||
// }
|
||||
if (!customData.isEmpty()) {
|
||||
payload.put("customData", customData);
|
||||
}
|
||||
payload.put("prodPrice", productPrice);
|
||||
payload.put("prodCount", productCount);
|
||||
developerPayload = Base64.getEncoder().encodeToString(payload.toString().getBytes(StandardCharsets.UTF_8));
|
||||
@@ -278,21 +283,6 @@ public class FlexionSDKAdapter implements
|
||||
() -> sendPayCallback(1, "billing_not_ready", null, null, null, null));
|
||||
}
|
||||
|
||||
private static Object parseCustomDataValue(String customData) {
|
||||
String trimmed = customData == null ? "" : customData.trim();
|
||||
try {
|
||||
if (trimmed.startsWith("{")) {
|
||||
return new JSONObject(trimmed);
|
||||
}
|
||||
if (trimmed.startsWith("[")) {
|
||||
return new JSONArray(trimmed);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
Log.w(TAG, "[PAY-CUSTOMDATA] customData json parse failed, keep raw string: " + e.getMessage());
|
||||
}
|
||||
return customData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void queryProducts() {
|
||||
// Flexion 渠道不通过 thirdExtend 获取商品列表,由 queryProducts(String) 替代
|
||||
@@ -300,9 +290,11 @@ public class FlexionSDKAdapter implements
|
||||
|
||||
@Override
|
||||
public void queryProducts(String productIds) {
|
||||
// Log.i(TAG, "queryProducts(productIds) called, billingConnected=" + billingConnected);
|
||||
List<String> ids = Arrays.asList(productIds.split(","));
|
||||
// Log.i(TAG, "queryProductDetails with " + ids.size() + " items from config");
|
||||
Log.i(TAG, "[FLEXION-SKU-PRICE] queryProducts productIds=" + productIds
|
||||
+ " count=" + ids.size()
|
||||
+ " billingConnected=" + billingConnected
|
||||
+ " billingReady=" + (billingService != null && billingService.isReady()));
|
||||
ensureBillingReady(null, "queryProducts",
|
||||
bs -> queryProductDetails(bs, ids),
|
||||
() -> sendExtensionError("billing_not_ready"));
|
||||
@@ -442,8 +434,8 @@ public class FlexionSDKAdapter implements
|
||||
JSONArray cached = drainCachedPendingPurchases();
|
||||
boolean cacheReady = isPendingPurchaseCacheReady();
|
||||
if (cached.length() > 0 || cacheReady) {
|
||||
Log.i(TAG, "[PAY-FLOW] queryPendingPurchases use cached result count=" + cached.length()
|
||||
+ " cacheReady=" + cacheReady);
|
||||
// Log.i(TAG, "[PAY-FLOW] queryPendingPurchases use cached result count=" + cached.length()
|
||||
// + " cacheReady=" + cacheReady);
|
||||
markPendingPurchaseCacheConsumed(cached);
|
||||
sendPendingPurchasesCallback(0, null, cached);
|
||||
return;
|
||||
@@ -455,18 +447,18 @@ public class FlexionSDKAdapter implements
|
||||
pendingPurchaseUnityCallbackWaiting = true;
|
||||
}
|
||||
if (pendingPurchaseQueryInProgress) {
|
||||
Log.i(TAG, "[PAY-FLOW] queryPendingPurchases wait running query"
|
||||
+ " sendUnityCallback=" + sendUnityCallback
|
||||
+ " cacheReady=" + pendingPurchaseCacheReady);
|
||||
// Log.i(TAG, "[PAY-FLOW] queryPendingPurchases wait running query"
|
||||
// + " sendUnityCallback=" + sendUnityCallback
|
||||
// + " cacheReady=" + pendingPurchaseCacheReady);
|
||||
return;
|
||||
}
|
||||
pendingPurchaseQueryInProgress = true;
|
||||
pendingPurchaseCacheReady = false;
|
||||
}
|
||||
|
||||
Log.i(TAG, "[PAY-FLOW] queryPendingPurchases start: billingService=" + billingService
|
||||
+ " billingConnected=" + billingConnected
|
||||
+ " sendUnityCallback=" + sendUnityCallback);
|
||||
// Log.i(TAG, "[PAY-FLOW] queryPendingPurchases start: billingService=" + billingService
|
||||
// + " billingConnected=" + billingConnected
|
||||
// + " sendUnityCallback=" + sendUnityCallback);
|
||||
ensureBillingReady(null, "queryPendingPurchases",
|
||||
bs -> {
|
||||
billingExecutor.execute(() -> {
|
||||
@@ -476,9 +468,9 @@ public class FlexionSDKAdapter implements
|
||||
(result, purchases) -> {
|
||||
int responseCode = result == null ? -1 : result.getResponseCode();
|
||||
String debugMessage = result == null ? "billing_result_null" : result.getDebugMessage();
|
||||
Log.i(TAG, "[PAY-FLOW] queryPendingPurchases result: code=" + responseCode
|
||||
+ " debugMsg=" + debugMessage
|
||||
+ " count=" + (purchases == null ? 0 : purchases.size()));
|
||||
// Log.i(TAG, "[PAY-FLOW] queryPendingPurchases result: code=" + responseCode
|
||||
// + " debugMsg=" + debugMessage
|
||||
// + " count=" + (purchases == null ? 0 : purchases.size()));
|
||||
if (responseCode != QUERY_PURCHASES_SUCCESS_CODE) {
|
||||
boolean shouldCallback = finishPendingQueryFailed();
|
||||
if (shouldCallback) {
|
||||
@@ -512,7 +504,7 @@ public class FlexionSDKAdapter implements
|
||||
});
|
||||
},
|
||||
() -> {
|
||||
Log.w(TAG, "[PAY-FLOW] queryPendingPurchases skipped: billing not connected");
|
||||
// Log.w(TAG, "[PAY-FLOW] queryPendingPurchases skipped: billing not connected");
|
||||
boolean shouldCallback = finishPendingQueryFailed();
|
||||
if (shouldCallback) sendPendingPurchasesCallback(1, "billing_not_ready", new JSONArray());
|
||||
});
|
||||
@@ -578,9 +570,9 @@ public class FlexionSDKAdapter implements
|
||||
|
||||
private static JSONArray drainCachedPendingPurchases() {
|
||||
synchronized (pendingPurchases) {
|
||||
Log.i(TAG, "[PAY-FLOW] drainCachedPendingPurchases start cachedCount=" + pendingPurchases.size()
|
||||
+ " queryInProgress=" + pendingPurchaseQueryInProgress
|
||||
+ " cacheReady=" + pendingPurchaseCacheReady);
|
||||
// Log.i(TAG, "[PAY-FLOW] drainCachedPendingPurchases start cachedCount=" + pendingPurchases.size()
|
||||
// + " queryInProgress=" + pendingPurchaseQueryInProgress
|
||||
// + " cacheReady=" + pendingPurchaseCacheReady);
|
||||
JSONArray result = new JSONArray();
|
||||
for (String item : pendingPurchases) {
|
||||
try {
|
||||
@@ -602,7 +594,7 @@ public class FlexionSDKAdapter implements
|
||||
JSONObject item = purchases.optJSONObject(i);
|
||||
if (item != null) pendingPurchases.add(item.toString());
|
||||
}
|
||||
Log.i(TAG, "[PAY-FLOW] replaceCachedPendingPurchases count=" + pendingPurchases.size());
|
||||
// Log.i(TAG, "[PAY-FLOW] replaceCachedPendingPurchases count=" + pendingPurchases.size());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -618,8 +610,8 @@ public class FlexionSDKAdapter implements
|
||||
result.put("code", code);
|
||||
if (errStr != null) result.put("errStr", errStr);
|
||||
result.put("respObj", purchases == null ? "[]" : purchases.toString());
|
||||
Log.i(TAG, "[PAY-FLOW] PendingPurchasesResult callback: code=" + code
|
||||
+ " count=" + (purchases == null ? 0 : purchases.length()));
|
||||
// Log.i(TAG, "[PAY-FLOW] PendingPurchasesResult callback: code=" + code
|
||||
// + " count=" + (purchases == null ? 0 : purchases.length()));
|
||||
UnityPlayer.UnitySendMessage(ConfigManager.UNITY_FACADE_NAME,
|
||||
"PendingPurchasesResult", result.toString());
|
||||
} catch (JSONException e) {
|
||||
@@ -641,6 +633,9 @@ public class FlexionSDKAdapter implements
|
||||
|
||||
private static void queryProductDetails(BillingService service, List<String> productIds) {
|
||||
final AtomicBoolean completed = new AtomicBoolean(false);
|
||||
Log.i(TAG, "[FLEXION-SKU-PRICE] queryProductDetails start count=" + productIds.size()
|
||||
+ " productIds=" + productIds
|
||||
+ " serviceReady=" + (service != null && service.isReady()));
|
||||
mainHandler.postDelayed(() -> {
|
||||
if (!completed.compareAndSet(false, true)) return;
|
||||
Log.w(TAG, "[PAY-FLOW] queryProductDetails timeout count=" + productIds.size());
|
||||
@@ -656,6 +651,11 @@ public class FlexionSDKAdapter implements
|
||||
Log.w(TAG, "[PAY-FLOW] queryProductDetails callback ignored after timeout");
|
||||
return;
|
||||
}
|
||||
Log.i(TAG, "[FLEXION-SKU-PRICE] queryProductDetails callback code="
|
||||
+ (billingResult == null ? "null" : billingResult.getResponseCode())
|
||||
+ " debugMsg="
|
||||
+ (billingResult == null ? "billing_result_null" : billingResult.getDebugMessage())
|
||||
+ " count=" + (productDetails == null ? 0 : productDetails.size()));
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
if (billingResult != null
|
||||
@@ -672,10 +672,17 @@ public class FlexionSDKAdapter implements
|
||||
item.put("price_amount_micros", detail.getPriceAmountMicros());
|
||||
item.put("price_currency_code", detail.getPriceCurrencyCode());
|
||||
item.put("type", detail.getType());
|
||||
Log.i(TAG, "[FLEXION-SKU-PRICE] sdk product id=" + detail.getId()
|
||||
+ " title=" + detail.getTitle()
|
||||
+ " price=" + detail.getPrice()
|
||||
+ " priceAmountMicros=" + detail.getPriceAmountMicros()
|
||||
+ " currency=" + detail.getPriceCurrencyCode()
|
||||
+ " type=" + detail.getType());
|
||||
arr.put(item);
|
||||
}
|
||||
result.put("code", 0);
|
||||
result.put("respObj", arr.toString());
|
||||
Log.i(TAG, "[FLEXION-SKU-PRICE] send Unity SKUListResult respObj=" + arr.toString());
|
||||
} else {
|
||||
result.put("code", 1);
|
||||
result.put("thirdExtend_errStr",
|
||||
@@ -731,12 +738,18 @@ public class FlexionSDKAdapter implements
|
||||
}
|
||||
// Log.i(TAG, "[PAY-FLOW] consumePurchase: token=" + token);
|
||||
ensureBillingReady(null, "consumePurchase",
|
||||
bs -> bs.consumeAsync(
|
||||
new ConsumeParams(token),
|
||||
r -> {
|
||||
// Log.i(TAG, "[PAY-FLOW] consume result: " +
|
||||
// (r.getResponseCode() == BillingResults.ResultCode.CONSUME_SUCCESS_CODE ? "ok" : "fail"));
|
||||
}),
|
||||
bs -> billingExecutor.execute(() -> {
|
||||
try {
|
||||
bs.consumeAsync(
|
||||
new ConsumeParams(token),
|
||||
r -> {
|
||||
// Log.i(TAG, "[PAY-FLOW] consume result: " +
|
||||
// (r.getResponseCode() == BillingResults.ResultCode.CONSUME_SUCCESS_CODE ? "ok" : "fail"));
|
||||
});
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "[PAY-FLOW] consumePurchase exception: " + e.getMessage());
|
||||
}
|
||||
}),
|
||||
() -> Log.w(TAG, "[PAY-FLOW] consumePurchase skipped: billing not connected"));
|
||||
}
|
||||
|
||||
@@ -744,6 +757,49 @@ public class FlexionSDKAdapter implements
|
||||
// Log.i(TAG, "[PAY-FLOW] cancelPurchase: TODO - dismiss billing dialog");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void review(Activity activity) {
|
||||
String storePageUri = getStorePageUri(activity);
|
||||
Log.w(TAG, "[ReviewDebug] review uri=" + storePageUri);
|
||||
if (TextUtils.isEmpty(storePageUri)) {
|
||||
Log.w(TAG, "review skipped: store page uri is empty");
|
||||
return;
|
||||
}
|
||||
|
||||
Activity targetActivity = activity != null ? activity : billingActivity;
|
||||
if (targetActivity == null) targetActivity = UnityPlayer.currentActivity;
|
||||
if (targetActivity == null) {
|
||||
Log.w(TAG, "review skipped: activity is null");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
targetActivity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(storePageUri)));
|
||||
} catch (Throwable e) {
|
||||
Log.w(TAG, "review exception: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getStorePageUri(Activity activity) {
|
||||
try {
|
||||
Activity targetActivity = activity != null ? activity : billingActivity;
|
||||
if (targetActivity == null) targetActivity = UnityPlayer.currentActivity;
|
||||
if (targetActivity == null) {
|
||||
Log.w(TAG, "getStorePageUri skipped: activity is null");
|
||||
return "";
|
||||
}
|
||||
|
||||
Object storePageUri = FLX.createChannelInfoService(targetActivity)
|
||||
.getCurrentChannelInfo(targetActivity)
|
||||
.getStorePageUri();
|
||||
return storePageUri != null ? storePageUri.toString() : "";
|
||||
} catch (Throwable e) {
|
||||
Log.w(TAG, "getStorePageUri exception: " + e.getMessage());
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
private static void sendExtensionError(String errStr) {
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
@@ -1,4 +1,4 @@
|
||||
org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
|
||||
org.gradle.jvmargs=-Xmx8192m
|
||||
org.gradle.parallel=true
|
||||
unityStreamingAssets=**STREAMING_ASSETS**
|
||||
# Android Resolver Properties Start
|
||||
|
||||
@@ -3,8 +3,8 @@ apply plugin: 'com.google.gms.google-services'
|
||||
|
||||
dependencies {
|
||||
implementation project(':unityLibrary')
|
||||
implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
|
||||
implementation("com.google.firebase:firebase-analytics")
|
||||
implementation platform('com.google.firebase:firebase-bom:34.6.0')
|
||||
implementation 'com.google.firebase:firebase-analytics'
|
||||
}
|
||||
|
||||
android {
|
||||
@@ -17,7 +17,6 @@ android {
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_11
|
||||
targetCompatibility JavaVersion.VERSION_11
|
||||
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
|
||||
@@ -13,7 +13,7 @@ android {
|
||||
}
|
||||
// Android Resolver Exclusions End
|
||||
android {
|
||||
namespace "com.unity3d.player"
|
||||
namespace "com.unity3d.player"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -31,17 +31,16 @@ dependencies {
|
||||
api "io.reactivex:rxandroid:1.2.1"
|
||||
api "io.reactivex:rxjava:1.1.9"
|
||||
|
||||
// Google Play In-App Review
|
||||
// Google Play In-App Review
|
||||
implementation 'com.google.android.play:review:2.0.1'
|
||||
// Google Play Billing — tuyoosdk AAR references BillingManager during init
|
||||
implementation 'com.android.billingclient:billing:7.0.0'
|
||||
implementation 'net.aihelp:android-aihelp-aar:5.3.+'
|
||||
|
||||
implementation 'com.google.android.gms:play-services-auth:20.2.0'
|
||||
|
||||
// Flexion SDK (includes wrapped billing)
|
||||
implementation("com.flexionmobile:sdk:4.0.1")
|
||||
|
||||
implementation('com.android.billingclient:billing:7.0.0')
|
||||
|
||||
implementation 'com.google.android.gms:play-services-basement:18.2.0'
|
||||
implementation 'androidx.fragment:fragment:1.3.6'
|
||||
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.41"
|
||||
@@ -66,13 +65,18 @@ dependencies {
|
||||
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.1.2"
|
||||
|
||||
// Android Resolver Dependencies Start
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.1' // Assets/MaxSdk/Mediation/Mintegral/Editor/Dependencies.xml:9
|
||||
implementation 'com.android.installreferrer:installreferrer:2.1' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:7
|
||||
implementation 'com.applovin.mediation:bytedance-adapter:8.1.0.3.0' // Assets/MaxSdk/Mediation/ByteDance/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:facebook-adapter:[6.18.0.1]' // Assets/MaxSdk/Mediation/Facebook/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:fyber-adapter:8.4.2.0' // Assets/MaxSdk/Mediation/Fyber/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:google-adapter:[23.6.0.1]' // Assets/MaxSdk/Mediation/Google/Editor/Dependencies.xml:5
|
||||
implementation 'com.applovin.mediation:ironsource-adapter:8.6.1.0.0' // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:mintegral-adapter:17.1.61.0' // Assets/MaxSdk/Mediation/Mintegral/Editor/Dependencies.xml:8
|
||||
implementation 'com.applovin.mediation:moloco-adapter:4.9.0.0' // Assets/MaxSdk/Mediation/Moloco/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:unityads-adapter:4.12.3.0' // Assets/MaxSdk/Mediation/UnityAds/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:vungle-adapter:7.4.2.2' // Assets/MaxSdk/Mediation/Vungle/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin.mediation:yandex-adapter:8.1.0.0' // Assets/MaxSdk/Mediation/Yandex/Editor/Dependencies.xml:4
|
||||
implementation 'com.applovin:applovin-sdk:13.5.1' // Assets/MaxSdk/AppLovin/Editor/Dependencies.xml:4
|
||||
implementation 'com.appsflyer:af-android-sdk:6.17.3' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:5
|
||||
implementation 'com.appsflyer:purchase-connector:2.2.0' // Assets/AppsFlyer/Editor/AppsFlyerDependencies.xml:8
|
||||
|
||||
@@ -26,15 +26,20 @@ dependencyResolutionManagement {
|
||||
password = "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"
|
||||
}
|
||||
}
|
||||
|
||||
// Android Resolver Repos Start
|
||||
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
|
||||
maven {
|
||||
def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
|
||||
maven {
|
||||
url "https://sdk.tapjoy.com/" // Packages/com.unity.package-offerwall/Editor/TJPluginDependencies.xml:9
|
||||
}
|
||||
maven {
|
||||
url "https://artifact.bytedance.com/repository/pangle" // Assets/MaxSdk/Mediation/ByteDance/Editor/Dependencies.xml:8
|
||||
}
|
||||
maven {
|
||||
url "https://android-sdk.is.com/" // Assets/MaxSdk/Mediation/IronSource/Editor/Dependencies.xml:8
|
||||
}
|
||||
maven {
|
||||
url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" // Assets/MaxSdk/Mediation/Mintegral/Editor/Dependencies.xml:8
|
||||
}
|
||||
mavenLocal()
|
||||
// Android Resolver Repos End
|
||||
flatDir {
|
||||
|
||||
Reference in New Issue
Block a user