package suraj.tiwari.reactnativefbads; import android.content.Context; import android.content.SharedPreferences; import android.util.Log; import com.facebook.ads.AdSettings; import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import java.util.HashMap; import java.util.Map; import java.util.HashSet; public class AdSettingsManager extends ReactContextBaseJavaModule implements LifecycleEventListener { final static private String TAG = AdSettingsManager.class.getName(); private HashSet<String> mTestDeviceHashes = new HashSet<>(); private boolean mIsChildDirected = false; private String mMediationService = null; private String mUrlPrefix = null; public AdSettingsManager(ReactApplicationContext reactContext) { super(reactContext); reactContext.addLifecycleEventListener(this); } @Override public String getName() { return "CTKAdSettingsManager"; } @ReactMethod public void addTestDevice(String deviceHash) { AdSettings.addTestDevice(deviceHash); mTestDeviceHashes.add(deviceHash); } @ReactMethod public void clearTestDevices() { AdSettings.clearTestDevices(); mTestDeviceHashes.clear(); } @ReactMethod public void setLogLevel(String logLevel) { Log.w(TAG, "This method is not supported on Android"); } @ReactMethod public void setIsChildDirected(boolean isChildDirected) { AdSettings.setIsChildDirected(isChildDirected); mIsChildDirected = isChildDirected; } @ReactMethod public void setMediationService(String mediationService) { AdSettings.setMediationService(mediationService); mMediationService = mediationService; } @ReactMethod public void setUrlPrefix(String urlPrefix) { AdSettings.setUrlPrefix(urlPrefix); mUrlPrefix = urlPrefix; } private void restoreSettings() { for (String hash: mTestDeviceHashes) { AdSettings.addTestDevice(hash); } AdSettings.setIsChildDirected(mIsChildDirected); AdSettings.setMediationService(mMediationService); AdSettings.setUrlPrefix(mUrlPrefix); } private void clearSettings() { AdSettings.clearTestDevices(); AdSettings.setIsChildDirected(false); AdSettings.setMediationService(null); AdSettings.setUrlPrefix(null); } @Override public void onHostResume() { restoreSettings(); } @Override public void onHostPause() { clearSettings(); } @Override public void onHostDestroy() { clearSettings(); } @Override public Map<String, Object> getConstants() { final Map<String, Object> constants = new HashMap<>(); SharedPreferences sp = getReactApplicationContext().getSharedPreferences("FBAdPrefs", 0); String deviceHashedId = sp.getString("deviceIdHash", null); constants.put("currentDeviceHash", deviceHashedId); return constants; } }