新后台

This commit is contained in:
2026-06-07 13:43:53 +08:00
parent a736e52943
commit 143b8f3b24
14 changed files with 324 additions and 28 deletions

View File

@@ -115,6 +115,7 @@ android {
dependencies {
// The version of react-native is set by the React Native Gradle Plugin
implementation("com.facebook.react:react-android")
implementation("com.google.android.gms:play-services-ads-identifier:18.1.0")
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}")
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {

View File

@@ -1,9 +1,13 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
<application
android:name=".MainApplication"
@@ -32,5 +36,9 @@
<data android:scheme="ipay" android:host="native" />
</intent-filter>
</activity>
<service
android:name="com.asterinet.react.bgactions.RNBackgroundActionsTask"
android:foregroundServiceType="dataSync"
tools:node="merge" />
</application>
</manifest>

View File

@@ -0,0 +1,37 @@
package com.rnpay;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.google.android.gms.ads.identifier.AdvertisingIdClient;
public class AdIdModule extends ReactContextBaseJavaModule {
public AdIdModule(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "AdId";
}
@ReactMethod
public void getAdvertisingId(Promise promise) {
ReactApplicationContext ctx = getReactApplicationContext();
new Thread(() -> {
try {
AdvertisingIdClient.Info info = AdvertisingIdClient.getAdvertisingIdInfo(ctx);
if (info.isLimitAdTrackingEnabled()) {
promise.reject("LIMITED", "Ad tracking limited");
return;
}
String id = info.getId();
promise.resolve(id != null ? id : "");
} catch (Exception e) {
promise.reject("ERROR", e.getMessage(), e);
}
}).start();
}
}

View File

@@ -0,0 +1,21 @@
package com.rnpay;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class AdIdPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.asList(new AdIdModule(reactContext));
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}

View File

@@ -23,6 +23,7 @@ public class MainApplication extends Application implements ReactApplication {
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
packages.add(new AdIdPackage());
return packages;
}