diff --git a/RNFyberOfferWall.js b/RNFyberOfferWall.js new file mode 100644 index 0000000..e07326a --- /dev/null +++ b/RNFyberOfferWall.js @@ -0,0 +1,59 @@ +import { NativeModules, NativeEventEmitter } from 'react-native'; + +const RNFyberOfferWall = NativeModules.RNFyberOfferWall; +const RNFyberOfferWallEventEmitter = new NativeEventEmitter(RNFyberOfferWall); + +const eventHandlers = { + offerWallAvailable: new Map(), + offerWallUnavailable: new Map(), + offerWallFailedToLoad: new Map(), + offerWallDidStart: new Map(), + offerWallClosed: new Map() +}; + +const addEventListener = (type, handler) => { + switch (type) { + case 'offerWallAvailable': + eventHandlers[type].set(handler, RNFyberOfferWallEventEmitter.addListener(type, handler)); + break; + case 'offerWallUnavailable': + eventHandlers[type].set(handler, RNFyberOfferWallEventEmitter.addListener(type, handler)); + break; + case 'offerWallFailedToLoad': + eventHandlers[type].set(handler, RNFyberOfferWallEventEmitter.addListener(type, type, (error) => { handler(error); })); + break; + case 'offerWallDidStart': + eventHandlers[type].set(handler, RNFyberOfferWallEventEmitter.addListener(type, handler)); + break; + case 'offerWallClosed': + eventHandlers[type].set(handler, RNFyberOfferWallEventEmitter.addListener(type, handler)); + break; + default: + console.log(`Event with type ${type} does not exist.`); + } +} + +const removeEventListener = (type, handler) => { + if (!eventHandlers[type].has(handler)) { + return; + } + eventHandlers[type].get(handler).remove(); + eventHandlers[type].delete(handler); +} + +const removeAllListeners = () => { + RNFyberOfferWallEventEmitter.removeAllListeners('offerWallAvailable'); + RNFyberOfferWallEventEmitter.removeAllListeners('offerWallUnavailable'); + RNFyberOfferWallEventEmitter.removeAllListeners('offerWallFailedToLoad'); + RNFyberOfferWallEventEmitter.removeAllListeners('offerWallDidStart'); + RNFyberOfferWallEventEmitter.removeAllListeners('offerWallClosed'); +}; + +module.exports = { + ...RNFyberOfferWall, + requestOfferWall: (cb = () => {}) => RNFyberOfferWall.requestOfferWall(cb), + showOfferWall: () => RNFyberOfferWall.showOfferWall(), + addEventListener, + removeEventListener, + removeAllListeners +}; diff --git a/android/build.gradle b/android/build.gradle index f6ae776..280c53f 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.library' android { compileSdkVersion 23 - buildToolsVersion "23.0.1" + buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 16 @@ -20,5 +20,6 @@ repositories { dependencies { implementation 'com.facebook.react:react-native:+' - implementation 'com.fyber:fyber-sdk:8.20.0' + implementation 'com.google.android.gms:play-services-ads:9.2.0' + implementation 'com.fyber:fyber-sdk:8.21.0@aar' } diff --git a/android/src/main/java/co/squaretwo/rnfyber/RNFyberOfferWallModule.java b/android/src/main/java/co/squaretwo/rnfyber/RNFyberOfferWallModule.java index 9ba9d0c..561ad57 100644 --- a/android/src/main/java/co/squaretwo/rnfyber/RNFyberOfferWallModule.java +++ b/android/src/main/java/co/squaretwo/rnfyber/RNFyberOfferWallModule.java @@ -5,15 +5,21 @@ import android.os.Handler; import android.os.Looper; import android.util.Log; +import android.support.annotation.Nullable; +import com.facebook.react.bridge.ActivityEventListener; +import com.facebook.react.bridge.BaseActivityEventListener; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.WritableMap; +import com.facebook.react.modules.core.DeviceEventManagerModule; import com.fyber.Fyber; import com.fyber.ads.AdFormat; import com.fyber.requesters.OfferWallRequester; import com.fyber.requesters.RequestCallback; import com.fyber.requesters.RequestError; +import com.facebook.react.bridge.Callback; /** * Created by benyee on 16/01/2016. @@ -25,10 +31,27 @@ public class RNFyberOfferWallModule extends ReactContextBaseJavaModule { private RequestCallback requestCallback; private ReactApplicationContext mContext; private Intent mOfferWallIntent; + private Callback requestAdCallback; + + private final ActivityEventListener mActivityEventListener = new BaseActivityEventListener() { + + @Override + public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) { + // handle the closing of the video + if (resultCode == Activity.RESULT_OK && requestCode == OFFER_WALL_REQUEST) { + + // OfferWall Closed + Log.d(TAG, "The offerwall is closed"); + sendEvent("offerWallClosed", null); + } + } + }; public RNFyberOfferWallModule(ReactApplicationContext reactContext) { super(reactContext); mContext = reactContext; + // Add the listener for `onActivityResult` + reactContext.addActivityEventListener(mActivityEventListener); } @Override @@ -43,21 +66,38 @@ public void initializeOfferWall(final String appId, final String securityToken, public void run() { Log.d(TAG, "Settings appId:" + appId); Fyber.Settings settings = Fyber.with(appId, getCurrentActivity()).withUserId(userId).withSecurityToken(securityToken).start(); + requestOfferWall(new Callback() { + public void invoke(Object... args) {} + }); + } + }); + } + + @ReactMethod + public void requestOfferWall(final Callback callback) { + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + Log.d(TAG, ">> Requesting OfferWall"); requestCallback = new RequestCallback() { @Override public void onRequestError(RequestError requestError) { Log.d(TAG, "Something went wrong with the request: " + requestError.getDescription()); + sendEvent("offerWallFailedToLoad", null); } @Override public void onAdAvailable(Intent intent) { Log.d(TAG, "Offers are available"); mOfferWallIntent = intent; + sendEvent("offerWallAvailable", null); } @Override public void onAdNotAvailable(AdFormat adFormat) { Log.d(TAG, "No ad available"); + sendEvent("offerWallUnavailable", null); + callback.invoke("OfferWall is not ready."); } }; OfferWallRequester.create(requestCallback).request(mContext); @@ -65,13 +105,18 @@ public void onAdNotAvailable(AdFormat adFormat) { }); } + private void sendEvent(String eventName, @Nullable WritableMap params) { + getReactApplicationContext().getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, params); + } + @ReactMethod public void showOfferWall() { new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { - mContext.startActivityForResult(mOfferWallIntent, OFFER_WALL_REQUEST, null); Log.d(TAG, "showOfferWall started"); + sendEvent("offerWallDidStart", null); + mContext.startActivityForResult(mOfferWallIntent, OFFER_WALL_REQUEST, null); } }); } diff --git a/android/src/main/java/co/squaretwo/rnfyber/RNFyberPackage.java b/android/src/main/java/co/squaretwo/rnfyber/RNFyberPackage.java index d70d26d..62be561 100644 --- a/android/src/main/java/co/squaretwo/rnfyber/RNFyberPackage.java +++ b/android/src/main/java/co/squaretwo/rnfyber/RNFyberPackage.java @@ -26,6 +26,7 @@ public List createNativeModules(ReactApplicationContext reactConte List modules = new ArrayList<>(); modules.add(new RNFyberOfferWallModule(reactContext)); modules.add(new RNFyberRewardedVideoModule(reactContext)); + modules.add(new RNFyberUserModule(reactContext)); return modules; } diff --git a/android/src/main/java/co/squaretwo/rnfyber/RNFyberRewardedVideoModule.java b/android/src/main/java/co/squaretwo/rnfyber/RNFyberRewardedVideoModule.java index 9043a51..b181483 100644 --- a/android/src/main/java/co/squaretwo/rnfyber/RNFyberRewardedVideoModule.java +++ b/android/src/main/java/co/squaretwo/rnfyber/RNFyberRewardedVideoModule.java @@ -4,18 +4,19 @@ import android.content.Intent; import android.os.Handler; import android.os.Looper; -import android.util.Log; import android.support.annotation.Nullable; +import android.util.Log; +import com.facebook.react.bridge.ActivityEventListener; +import com.facebook.react.bridge.BaseActivityEventListener; import com.facebook.react.bridge.Callback; -import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.WritableMap; import com.facebook.react.modules.core.DeviceEventManagerModule; - -import com.fyber.Fyber; import com.fyber.ads.AdFormat; +import com.fyber.ads.videos.RewardedVideoActivity; import com.fyber.requesters.RequestCallback; import com.fyber.requesters.RequestError; import com.fyber.requesters.RewardedVideoRequester; @@ -33,10 +34,41 @@ public class RNFyberRewardedVideoModule extends ReactContextBaseJavaModule { private Intent mRewardedVideoIntent; private Callback requestAdCallback; + private final ActivityEventListener mActivityEventListener = new BaseActivityEventListener() { + + @Override + public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) { + // handle the closing of the video + if (resultCode == Activity.RESULT_OK && requestCode == REWARDED_VIDEO_REQUEST_CODE) { + + // check the engagement status + String engagementResult = data.getStringExtra(RewardedVideoActivity.ENGAGEMENT_STATUS); + switch (engagementResult) { + case RewardedVideoActivity.REQUEST_STATUS_PARAMETER_FINISHED_VALUE: + // The user watched the entire video and will be rewarded + Log.d(TAG, "The video ad was dismissed because the user completed it"); + sendEvent("rewardedVideoClosedByUser", null); + break; + case RewardedVideoActivity.REQUEST_STATUS_PARAMETER_ABORTED_VALUE: + // The user stopped the video early and will not be rewarded + Log.d(TAG, "The video ad was dismissed because the user explicitly closed it"); + sendEvent("rewardedVideoClosedByError", null); + break; + case RewardedVideoActivity.REQUEST_STATUS_PARAMETER_ERROR: + // An error occurred while showing the video and the user will not be rewarded + Log.d(TAG, "The video ad was dismissed error during playing"); + sendEvent("rewardedVideoClosedByError", null); + break; + } + } + } + }; public RNFyberRewardedVideoModule(ReactApplicationContext reactContext) { super(reactContext); mContext = reactContext; + // Add the listener for `onActivityResult` + reactContext.addActivityEventListener(mActivityEventListener); } @Override diff --git a/android/src/main/java/co/squaretwo/rnfyber/RNFyberUserModule.java b/android/src/main/java/co/squaretwo/rnfyber/RNFyberUserModule.java new file mode 100644 index 0000000..38b4d75 --- /dev/null +++ b/android/src/main/java/co/squaretwo/rnfyber/RNFyberUserModule.java @@ -0,0 +1,61 @@ +package co.squaretwo.rnfyber; + +import android.os.Handler; +import android.os.Looper; +import android.util.Log; + +import com.facebook.react.bridge.ReactApplicationContext; +import com.facebook.react.bridge.ReactContextBaseJavaModule; +import com.facebook.react.bridge.ReactMethod; +import com.facebook.react.bridge.ReadableMap; +import com.fyber.Fyber; +import com.fyber.user.User; + +/** + * Created by Heiko Weber on 17/05/2018. + */ +public class RNFyberUserModule extends ReactContextBaseJavaModule { + private static final String TAG = "RNFyberUser"; + + private ReactApplicationContext mContext; + + public RNFyberUserModule(ReactApplicationContext reactContext) { + super(reactContext); + mContext = reactContext; + } + + @Override + public String getName() { + return TAG; + } + + @ReactMethod + public void set(final ReadableMap uprops) { + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + try { + if (uprops.hasKey("age")) { + User.setAge(uprops.getInt("age")); + } + if (uprops.hasKey("custom")) { + ReadableMap custom = uprops.getMap("custom"); + String[] pubs = { "pub0","pub1","pub2","pub3", "pub4", "pub5", "pub6", "pub7", "pub8", "pub9" }; + for (String s: pubs) { + if (custom.hasKey(s)) { + User.addCustomValue(s, custom.getString(s)); + } + } + } + } catch (Exception e) { + } + } + }); + } + + @ReactMethod + public void startFyberSDK(final String appId, final String securityToken, final String userId) { + Log.d(TAG, "startFyberSDK for appId:" + appId); + Fyber.with(appId, getCurrentActivity()).withUserId(userId).withSecurityToken(securityToken).start(); + } +} diff --git a/index.js b/index.js index 70e83dc..670eb22 100644 --- a/index.js +++ b/index.js @@ -1,6 +1,6 @@ // // react-native-fyber -// +// import React, {Component} from 'react'; import {NativeModules, Text, View, requireNativeComponent} from 'react-native' @@ -20,7 +20,8 @@ class FyberBanner extends Component { } } -const FyberOfferWall = NativeModules['RNFyberOfferWall']; +const FyberUser = NativeModules['RNFyberUser']; import FyberRewardedVideo from './RNFyberRewardedVideo'; +import FyberOfferWall from './RNFyberOfferWall'; -module.exports = {FyberBanner, FyberOfferWall, FyberRewardedVideo}; +module.exports = {FyberBanner, FyberOfferWall, FyberRewardedVideo, FyberUser}; diff --git a/ios/RNFyber.xcodeproj/project.pbxproj b/ios/RNFyber.xcodeproj/project.pbxproj index ca8c784..565bf89 100644 --- a/ios/RNFyber.xcodeproj/project.pbxproj +++ b/ios/RNFyber.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 420DF85220AE02ED002E5C74 /* RNFyberUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 420DF85020AE02ED002E5C74 /* RNFyberUser.m */; }; B52AD3AB1DDA5401008AE987 /* RNFyberRewardedVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = B52AD3AA1DDA5401008AE987 /* RNFyberRewardedVideo.m */; }; B574985A1CEFB0AB002F1EFF /* RNFyber.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = B57498591CEFB0AB002F1EFF /* RNFyber.h */; }; B574985C1CEFB0AB002F1EFF /* RNFyber.m in Sources */ = {isa = PBXBuildFile; fileRef = B574985B1CEFB0AB002F1EFF /* RNFyber.m */; }; @@ -27,6 +28,68 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 420DF7E920ADAC2C002E5C74 /* FYBOffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBOffer.h; sourceTree = ""; }; + 420DF7EA20ADAC2C002E5C74 /* FYBInterstitialCreativeType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialCreativeType.h; sourceTree = ""; }; + 420DF7EB20ADAC2C002E5C74 /* FYBBannerNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBannerNetworkAdapter.h; sourceTree = ""; }; + 420DF7EC20ADAC2C002E5C74 /* FYBInterstitialControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialControllerDelegate.h; sourceTree = ""; }; + 420DF7ED20ADAC2C002E5C74 /* FYBPrecachingNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBPrecachingNetworkAdapter.h; sourceTree = ""; }; + 420DF7EE20ADAC2C002E5C74 /* FYBRewardedVideoControllerState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoControllerState.h; sourceTree = ""; }; + 420DF7EF20ADAC2C002E5C74 /* FYBBaseOffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBaseOffer.h; sourceTree = ""; }; + 420DF7F020ADAC2C002E5C74 /* FyberSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FyberSDK.h; sourceTree = ""; }; + 420DF7F120ADAC2C002E5C74 /* FYBSystemLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBSystemLogger.h; sourceTree = ""; }; + 420DF7F220ADAC2C002E5C74 /* FYBLogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBLogger.h; sourceTree = ""; }; + 420DF7F320ADAC2C002E5C74 /* FYBVirtualCurrencyErrorType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBVirtualCurrencyErrorType.h; sourceTree = ""; }; + 420DF7F420ADAC2C002E5C74 /* FYBBannerControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBannerControllerDelegate.h; sourceTree = ""; }; + 420DF7F520ADAC2C002E5C74 /* FYB_SDK_versions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYB_SDK_versions.h; sourceTree = ""; }; + 420DF7F620ADAC2C002E5C74 /* FYBReachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBReachability.h; sourceTree = ""; }; + 420DF7F720ADAC2C002E5C74 /* FYBBannerSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBannerSize.h; sourceTree = ""; }; + 420DF7F820ADAC2C002E5C74 /* FYBInterstitialNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialNetworkAdapter.h; sourceTree = ""; }; + 420DF7F920ADAC2C002E5C74 /* FYBRewardedVideoControllerDismissReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoControllerDismissReason.h; sourceTree = ""; }; + 420DF7FA20ADAC2C002E5C74 /* FYBBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBannerView.h; sourceTree = ""; }; + 420DF7FD20ADAC2C002E5C74 /* StartedBundleIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = StartedBundleIcon.png; sourceTree = ""; }; + 420DF7FE20ADAC2C002E5C74 /* FYBBackIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "FYBBackIcon@2x.png"; sourceTree = ""; }; + 420DF7FF20ADAC2C002E5C74 /* UnstartedBundleIcon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UnstartedBundleIcon.png; sourceTree = ""; }; + 420DF80020ADAC2C002E5C74 /* FYBIntegrationAnalyzerViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FYBIntegrationAnalyzerViewController.xib; sourceTree = ""; }; + 420DF80120ADAC2C002E5C74 /* FYBIntegrationAnalyzerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBIntegrationAnalyzerViewController.h; sourceTree = ""; }; + 420DF80220ADAC2C002E5C74 /* FYBIntegrationAnalyzerError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBIntegrationAnalyzerError.h; sourceTree = ""; }; + 420DF80320ADAC2C002E5C74 /* FYBInterstitialControllerDismissReason.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialControllerDismissReason.h; sourceTree = ""; }; + 420DF80420ADAC2C002E5C74 /* FYBBannerControllerState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBannerControllerState.h; sourceTree = ""; }; + 420DF80520ADAC2C002E5C74 /* FYBInterstitialOffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialOffer.h; sourceTree = ""; }; + 420DF80620ADAC2C002E5C74 /* FYBRewardedVideoNetworkAdapterDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoNetworkAdapterDelegate.h; sourceTree = ""; }; + 420DF80720ADAC2C002E5C74 /* FYBRewardedVideoControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoControllerDelegate.h; sourceTree = ""; }; + 420DF80820ADAC2C002E5C74 /* FYBTPNGenericAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBTPNGenericAdapter.h; sourceTree = ""; }; + 420DF80920ADAC2C002E5C74 /* FYBInterstitialController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialController.h; sourceTree = ""; }; + 420DF80A20ADAC2C002E5C74 /* FYBBaseNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBaseNetwork.h; sourceTree = ""; }; + 420DF80B20ADAC2C002E5C74 /* FYBRewardedVideoController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoController.h; sourceTree = ""; }; + 420DF80C20ADAC2C002E5C74 /* FYBLogAppender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBLogAppender.h; sourceTree = ""; }; + 420DF80D20ADAC2C002E5C74 /* FYBTPNVideoAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBTPNVideoAdapter.h; sourceTree = ""; }; + 420DF80E20ADAC2C002E5C74 /* FYBCacheManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBCacheManager.h; sourceTree = ""; }; + 420DF80F20ADAC2C002E5C74 /* FYBVirtualCurrencyClientDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBVirtualCurrencyClientDelegate.h; sourceTree = ""; }; + 420DF81020ADAC2C002E5C74 /* FYBUserConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBUserConstants.h; sourceTree = ""; }; + 420DF81120ADAC2C002E5C74 /* FYBRandomID.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBRandomID.h; sourceTree = ""; }; + 420DF81220ADAC2C002E5C74 /* FYBURLParametersProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBURLParametersProvider.h; sourceTree = ""; }; + 420DF81320ADAC2C002E5C74 /* FYBInterstitialNetworkAdapterDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialNetworkAdapterDelegate.h; sourceTree = ""; }; + 420DF81420ADAC2C002E5C74 /* FYBLogLevel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBLogLevel.h; sourceTree = ""; }; + 420DF81520ADAC2C002E5C74 /* FYBVirtualCurrencyResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBVirtualCurrencyResponse.h; sourceTree = ""; }; + 420DF81620ADAC2C002E5C74 /* FYBSDKOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBSDKOptions.h; sourceTree = ""; }; + 420DF81720ADAC2D002E5C74 /* FYBBannerPosition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBannerPosition.h; sourceTree = ""; }; + 420DF81820ADAC2D002E5C74 /* FYBError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBError.h; sourceTree = ""; }; + 420DF81920ADAC2D002E5C74 /* FYBIntegrationReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBIntegrationReport.h; sourceTree = ""; }; + 420DF81A20ADAC2D002E5C74 /* FYBAdapterOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBAdapterOptions.h; sourceTree = ""; }; + 420DF81B20ADAC2D002E5C74 /* FYBOfferWallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBOfferWallViewController.h; sourceTree = ""; }; + 420DF81C20ADAC2D002E5C74 /* FYBRewardedVideoNetworkAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoNetworkAdapter.h; sourceTree = ""; }; + 420DF81D20ADAC2D002E5C74 /* FYBCacheManagerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBCacheManagerDelegate.h; sourceTree = ""; }; + 420DF81E20ADAC2D002E5C74 /* FYBVirtualCurrencyClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBVirtualCurrencyClient.h; sourceTree = ""; }; + 420DF81F20ADAC2D002E5C74 /* FYBBannerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBannerController.h; sourceTree = ""; }; + 420DF82020ADAC2D002E5C74 /* FYBUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBUser.h; sourceTree = ""; }; + 420DF82120ADAC2D002E5C74 /* FYBBannerNetworkAdapterDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBBannerNetworkAdapterDelegate.h; sourceTree = ""; }; + 420DF82220ADAC2D002E5C74 /* FYBIntegrationAnalyzer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBIntegrationAnalyzer.h; sourceTree = ""; }; + 420DF82320ADAC2D002E5C74 /* FYBInterstitialControllerState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialControllerState.h; sourceTree = ""; }; + 420DF82420ADAC2D002E5C74 /* FYBRequestParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBRequestParameters.h; sourceTree = ""; }; + 420DF82520ADAC2D002E5C74 /* FYBMediationBundleInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FYBMediationBundleInfo.h; sourceTree = ""; }; + 420DF85020AE02ED002E5C74 /* RNFyberUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNFyberUser.m; sourceTree = ""; }; + 420DF85120AE02ED002E5C74 /* RNFyberUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNFyberUser.h; sourceTree = ""; }; + 42DBC21E2252732E00D51C2A /* libFyberSDK-8.22.0.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libFyberSDK-8.22.0.a"; sourceTree = ""; }; B52AD3A91DDA5401008AE987 /* RNFyberRewardedVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNFyberRewardedVideo.h; sourceTree = ""; }; B52AD3AA1DDA5401008AE987 /* RNFyberRewardedVideo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNFyberRewardedVideo.m; sourceTree = ""; }; B57498561CEFB0AB002F1EFF /* libRNFyber.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNFyber.a; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -34,64 +97,88 @@ B574985B1CEFB0AB002F1EFF /* RNFyber.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNFyber.m; sourceTree = ""; }; B5BEC7381CF3953700153483 /* RNFyberOfferWall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNFyberOfferWall.m; sourceTree = ""; }; B5BEC7391CF3953700153483 /* RNFyberOfferWall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNFyberOfferWall.h; sourceTree = ""; }; - B5BEC8381CF3D32500153483 /* FYB_SDK_versions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYB_SDK_versions.h; sourceTree = ""; }; - B5BEC8391CF3D32500153483 /* FYBAdapterOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBAdapterOptions.h; sourceTree = ""; }; - B5BEC83A1CF3D32500153483 /* FYBBannerController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBannerController.h; sourceTree = ""; }; - B5BEC83B1CF3D32500153483 /* FYBBannerControllerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBannerControllerDelegate.h; sourceTree = ""; }; - B5BEC83C1CF3D32500153483 /* FYBBannerControllerState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBannerControllerState.h; sourceTree = ""; }; - B5BEC83D1CF3D32500153483 /* FYBBannerNetworkAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBannerNetworkAdapter.h; sourceTree = ""; }; - B5BEC83E1CF3D32500153483 /* FYBBannerNetworkAdapterDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBannerNetworkAdapterDelegate.h; sourceTree = ""; }; - B5BEC83F1CF3D32500153483 /* FYBBannerPosition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBannerPosition.h; sourceTree = ""; }; - B5BEC8401CF3D32500153483 /* FYBBannerSize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBannerSize.h; sourceTree = ""; }; - B5BEC8411CF3D32500153483 /* FYBBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBannerView.h; sourceTree = ""; }; - B5BEC8421CF3D32500153483 /* FYBBaseNetwork.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBBaseNetwork.h; sourceTree = ""; }; - B5BEC8431CF3D32500153483 /* FYBCacheManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBCacheManager.h; sourceTree = ""; }; - B5BEC8441CF3D32500153483 /* FYBError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBError.h; sourceTree = ""; }; - B5BEC8451CF3D32500153483 /* FyberSDK.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FyberSDK.h; sourceTree = ""; }; - B5BEC8461CF3D32500153483 /* FYBInterstitialController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialController.h; sourceTree = ""; }; - B5BEC8471CF3D32500153483 /* FYBInterstitialControllerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialControllerDelegate.h; sourceTree = ""; }; - B5BEC8481CF3D32500153483 /* FYBInterstitialControllerDismissReason.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialControllerDismissReason.h; sourceTree = ""; }; - B5BEC8491CF3D32500153483 /* FYBInterstitialControllerState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialControllerState.h; sourceTree = ""; }; - B5BEC84A1CF3D32500153483 /* FYBInterstitialNetworkAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialNetworkAdapter.h; sourceTree = ""; }; - B5BEC84B1CF3D32500153483 /* FYBInterstitialNetworkAdapterDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBInterstitialNetworkAdapterDelegate.h; sourceTree = ""; }; - B5BEC84C1CF3D32500153483 /* FYBLogAppender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBLogAppender.h; sourceTree = ""; }; - B5BEC84D1CF3D32500153483 /* FYBLogger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBLogger.h; sourceTree = ""; }; - B5BEC84E1CF3D32500153483 /* FYBLogLevel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBLogLevel.h; sourceTree = ""; }; - B5BEC84F1CF3D32500153483 /* FYBOfferWallViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBOfferWallViewController.h; sourceTree = ""; }; - B5BEC8501CF3D32500153483 /* FYBPrecachingNetworkAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBPrecachingNetworkAdapter.h; sourceTree = ""; }; - B5BEC8511CF3D32500153483 /* FYBRandomID.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRandomID.h; sourceTree = ""; }; - B5BEC8521CF3D32500153483 /* FYBReachability.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBReachability.h; sourceTree = ""; }; - B5BEC8531CF3D32500153483 /* FYBRequestParameters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRequestParameters.h; sourceTree = ""; }; - B5BEC8541CF3D32500153483 /* FYBRewardedVideoController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoController.h; sourceTree = ""; }; - B5BEC8551CF3D32500153483 /* FYBRewardedVideoControllerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoControllerDelegate.h; sourceTree = ""; }; - B5BEC8561CF3D32500153483 /* FYBRewardedVideoControllerDismissReason.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoControllerDismissReason.h; sourceTree = ""; }; - B5BEC8571CF3D32500153483 /* FYBRewardedVideoControllerState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoControllerState.h; sourceTree = ""; }; - B5BEC8581CF3D32500153483 /* FYBRewardedVideoNetworkAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoNetworkAdapter.h; sourceTree = ""; }; - B5BEC8591CF3D32500153483 /* FYBRewardedVideoNetworkAdapterDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoNetworkAdapterDelegate.h; sourceTree = ""; }; - B5BEC85A1CF3D32500153483 /* FYBRewardedVideoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBRewardedVideoViewController.h; sourceTree = ""; }; - B5BEC85B1CF3D32500153483 /* FYBSDKOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBSDKOptions.h; sourceTree = ""; }; - B5BEC85C1CF3D32500153483 /* FYBSystemLogger.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBSystemLogger.h; sourceTree = ""; }; - B5BEC85D1CF3D32500153483 /* FYBTPNGenericAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBTPNGenericAdapter.h; sourceTree = ""; }; - B5BEC85E1CF3D32500153483 /* FYBTPNMediationTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBTPNMediationTypes.h; sourceTree = ""; }; - B5BEC85F1CF3D32500153483 /* FYBTPNVideoAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBTPNVideoAdapter.h; sourceTree = ""; }; - B5BEC8601CF3D32500153483 /* FYBUrlParametersProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBUrlParametersProvider.h; sourceTree = ""; }; - B5BEC8611CF3D32500153483 /* FYBUser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBUser.h; sourceTree = ""; }; - B5BEC8621CF3D32500153483 /* FYBUserConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBUserConstants.h; sourceTree = ""; }; - B5BEC8631CF3D32500153483 /* FYBVirtualCurrencyClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBVirtualCurrencyClient.h; sourceTree = ""; }; - B5BEC8641CF3D32500153483 /* FYBVirtualCurrencyClientDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBVirtualCurrencyClientDelegate.h; sourceTree = ""; }; - B5BEC8651CF3D32500153483 /* FYBVirtualCurrencyErrorType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBVirtualCurrencyErrorType.h; sourceTree = ""; }; - B5BEC8661CF3D32500153483 /* FYBVirtualCurrencyResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FYBVirtualCurrencyResponse.h; sourceTree = ""; }; - B5BEC8671CF3D32500153483 /* libFyberSDK-8.3.1.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libFyberSDK-8.3.1.a"; sourceTree = ""; }; - B5BEC8691CF3D32500153483 /* FYBBackIcon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "FYBBackIcon@2x.png"; sourceTree = ""; }; - B5BEC86A1CF3D32500153483 /* FYBBackIconiPad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "FYBBackIconiPad@2x.png"; sourceTree = ""; }; - B5BEC86B1CF3D32500153483 /* FYBBackIconiPhone@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "FYBBackIconiPhone@2x.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ + 420DF7E820ADAC2C002E5C74 /* fyber-sdk-lib */ = { + isa = PBXGroup; + children = ( + 420DF7E920ADAC2C002E5C74 /* FYBOffer.h */, + 420DF7EA20ADAC2C002E5C74 /* FYBInterstitialCreativeType.h */, + 420DF7EB20ADAC2C002E5C74 /* FYBBannerNetworkAdapter.h */, + 420DF7EC20ADAC2C002E5C74 /* FYBInterstitialControllerDelegate.h */, + 420DF7ED20ADAC2C002E5C74 /* FYBPrecachingNetworkAdapter.h */, + 420DF7EE20ADAC2C002E5C74 /* FYBRewardedVideoControllerState.h */, + 420DF7EF20ADAC2C002E5C74 /* FYBBaseOffer.h */, + 420DF7F020ADAC2C002E5C74 /* FyberSDK.h */, + 420DF7F120ADAC2C002E5C74 /* FYBSystemLogger.h */, + 420DF7F220ADAC2C002E5C74 /* FYBLogger.h */, + 420DF7F320ADAC2C002E5C74 /* FYBVirtualCurrencyErrorType.h */, + 420DF7F420ADAC2C002E5C74 /* FYBBannerControllerDelegate.h */, + 420DF7F520ADAC2C002E5C74 /* FYB_SDK_versions.h */, + 420DF7F620ADAC2C002E5C74 /* FYBReachability.h */, + 420DF7F720ADAC2C002E5C74 /* FYBBannerSize.h */, + 420DF7F820ADAC2C002E5C74 /* FYBInterstitialNetworkAdapter.h */, + 420DF7F920ADAC2C002E5C74 /* FYBRewardedVideoControllerDismissReason.h */, + 420DF7FA20ADAC2C002E5C74 /* FYBBannerView.h */, + 42DBC21E2252732E00D51C2A /* libFyberSDK-8.22.0.a */, + 420DF7FC20ADAC2C002E5C74 /* Resources */, + 420DF80120ADAC2C002E5C74 /* FYBIntegrationAnalyzerViewController.h */, + 420DF80220ADAC2C002E5C74 /* FYBIntegrationAnalyzerError.h */, + 420DF80320ADAC2C002E5C74 /* FYBInterstitialControllerDismissReason.h */, + 420DF80420ADAC2C002E5C74 /* FYBBannerControllerState.h */, + 420DF80520ADAC2C002E5C74 /* FYBInterstitialOffer.h */, + 420DF80620ADAC2C002E5C74 /* FYBRewardedVideoNetworkAdapterDelegate.h */, + 420DF80720ADAC2C002E5C74 /* FYBRewardedVideoControllerDelegate.h */, + 420DF80820ADAC2C002E5C74 /* FYBTPNGenericAdapter.h */, + 420DF80920ADAC2C002E5C74 /* FYBInterstitialController.h */, + 420DF80A20ADAC2C002E5C74 /* FYBBaseNetwork.h */, + 420DF80B20ADAC2C002E5C74 /* FYBRewardedVideoController.h */, + 420DF80C20ADAC2C002E5C74 /* FYBLogAppender.h */, + 420DF80D20ADAC2C002E5C74 /* FYBTPNVideoAdapter.h */, + 420DF80E20ADAC2C002E5C74 /* FYBCacheManager.h */, + 420DF80F20ADAC2C002E5C74 /* FYBVirtualCurrencyClientDelegate.h */, + 420DF81020ADAC2C002E5C74 /* FYBUserConstants.h */, + 420DF81120ADAC2C002E5C74 /* FYBRandomID.h */, + 420DF81220ADAC2C002E5C74 /* FYBURLParametersProvider.h */, + 420DF81320ADAC2C002E5C74 /* FYBInterstitialNetworkAdapterDelegate.h */, + 420DF81420ADAC2C002E5C74 /* FYBLogLevel.h */, + 420DF81520ADAC2C002E5C74 /* FYBVirtualCurrencyResponse.h */, + 420DF81620ADAC2C002E5C74 /* FYBSDKOptions.h */, + 420DF81720ADAC2D002E5C74 /* FYBBannerPosition.h */, + 420DF81820ADAC2D002E5C74 /* FYBError.h */, + 420DF81920ADAC2D002E5C74 /* FYBIntegrationReport.h */, + 420DF81A20ADAC2D002E5C74 /* FYBAdapterOptions.h */, + 420DF81B20ADAC2D002E5C74 /* FYBOfferWallViewController.h */, + 420DF81C20ADAC2D002E5C74 /* FYBRewardedVideoNetworkAdapter.h */, + 420DF81D20ADAC2D002E5C74 /* FYBCacheManagerDelegate.h */, + 420DF81E20ADAC2D002E5C74 /* FYBVirtualCurrencyClient.h */, + 420DF81F20ADAC2D002E5C74 /* FYBBannerController.h */, + 420DF82020ADAC2D002E5C74 /* FYBUser.h */, + 420DF82120ADAC2D002E5C74 /* FYBBannerNetworkAdapterDelegate.h */, + 420DF82220ADAC2D002E5C74 /* FYBIntegrationAnalyzer.h */, + 420DF82320ADAC2D002E5C74 /* FYBInterstitialControllerState.h */, + 420DF82420ADAC2D002E5C74 /* FYBRequestParameters.h */, + 420DF82520ADAC2D002E5C74 /* FYBMediationBundleInfo.h */, + ); + path = "fyber-sdk-lib"; + sourceTree = ""; + }; + 420DF7FC20ADAC2C002E5C74 /* Resources */ = { + isa = PBXGroup; + children = ( + 420DF7FD20ADAC2C002E5C74 /* StartedBundleIcon.png */, + 420DF7FE20ADAC2C002E5C74 /* FYBBackIcon@2x.png */, + 420DF7FF20ADAC2C002E5C74 /* UnstartedBundleIcon.png */, + 420DF80020ADAC2C002E5C74 /* FYBIntegrationAnalyzerViewController.xib */, + ); + path = Resources; + sourceTree = ""; + }; B574984D1CEFB0AB002F1EFF = { isa = PBXGroup; children = ( - B5BEC8371CF3D32500153483 /* fyber-sdk-lib */, + 420DF7E820ADAC2C002E5C74 /* fyber-sdk-lib */, B57498581CEFB0AB002F1EFF /* RNFyber */, B57498571CEFB0AB002F1EFF /* Products */, ); @@ -108,6 +195,8 @@ B57498581CEFB0AB002F1EFF /* RNFyber */ = { isa = PBXGroup; children = ( + 420DF85120AE02ED002E5C74 /* RNFyberUser.h */, + 420DF85020AE02ED002E5C74 /* RNFyberUser.m */, B52AD3A91DDA5401008AE987 /* RNFyberRewardedVideo.h */, B52AD3AA1DDA5401008AE987 /* RNFyberRewardedVideo.m */, B5BEC7381CF3953700153483 /* RNFyberOfferWall.m */, @@ -118,72 +207,6 @@ path = RNFyber; sourceTree = ""; }; - B5BEC8371CF3D32500153483 /* fyber-sdk-lib */ = { - isa = PBXGroup; - children = ( - B5BEC8381CF3D32500153483 /* FYB_SDK_versions.h */, - B5BEC8391CF3D32500153483 /* FYBAdapterOptions.h */, - B5BEC83A1CF3D32500153483 /* FYBBannerController.h */, - B5BEC83B1CF3D32500153483 /* FYBBannerControllerDelegate.h */, - B5BEC83C1CF3D32500153483 /* FYBBannerControllerState.h */, - B5BEC83D1CF3D32500153483 /* FYBBannerNetworkAdapter.h */, - B5BEC83E1CF3D32500153483 /* FYBBannerNetworkAdapterDelegate.h */, - B5BEC83F1CF3D32500153483 /* FYBBannerPosition.h */, - B5BEC8401CF3D32500153483 /* FYBBannerSize.h */, - B5BEC8411CF3D32500153483 /* FYBBannerView.h */, - B5BEC8421CF3D32500153483 /* FYBBaseNetwork.h */, - B5BEC8431CF3D32500153483 /* FYBCacheManager.h */, - B5BEC8441CF3D32500153483 /* FYBError.h */, - B5BEC8451CF3D32500153483 /* FyberSDK.h */, - B5BEC8461CF3D32500153483 /* FYBInterstitialController.h */, - B5BEC8471CF3D32500153483 /* FYBInterstitialControllerDelegate.h */, - B5BEC8481CF3D32500153483 /* FYBInterstitialControllerDismissReason.h */, - B5BEC8491CF3D32500153483 /* FYBInterstitialControllerState.h */, - B5BEC84A1CF3D32500153483 /* FYBInterstitialNetworkAdapter.h */, - B5BEC84B1CF3D32500153483 /* FYBInterstitialNetworkAdapterDelegate.h */, - B5BEC84C1CF3D32500153483 /* FYBLogAppender.h */, - B5BEC84D1CF3D32500153483 /* FYBLogger.h */, - B5BEC84E1CF3D32500153483 /* FYBLogLevel.h */, - B5BEC84F1CF3D32500153483 /* FYBOfferWallViewController.h */, - B5BEC8501CF3D32500153483 /* FYBPrecachingNetworkAdapter.h */, - B5BEC8511CF3D32500153483 /* FYBRandomID.h */, - B5BEC8521CF3D32500153483 /* FYBReachability.h */, - B5BEC8531CF3D32500153483 /* FYBRequestParameters.h */, - B5BEC8541CF3D32500153483 /* FYBRewardedVideoController.h */, - B5BEC8551CF3D32500153483 /* FYBRewardedVideoControllerDelegate.h */, - B5BEC8561CF3D32500153483 /* FYBRewardedVideoControllerDismissReason.h */, - B5BEC8571CF3D32500153483 /* FYBRewardedVideoControllerState.h */, - B5BEC8581CF3D32500153483 /* FYBRewardedVideoNetworkAdapter.h */, - B5BEC8591CF3D32500153483 /* FYBRewardedVideoNetworkAdapterDelegate.h */, - B5BEC85A1CF3D32500153483 /* FYBRewardedVideoViewController.h */, - B5BEC85B1CF3D32500153483 /* FYBSDKOptions.h */, - B5BEC85C1CF3D32500153483 /* FYBSystemLogger.h */, - B5BEC85D1CF3D32500153483 /* FYBTPNGenericAdapter.h */, - B5BEC85E1CF3D32500153483 /* FYBTPNMediationTypes.h */, - B5BEC85F1CF3D32500153483 /* FYBTPNVideoAdapter.h */, - B5BEC8601CF3D32500153483 /* FYBUrlParametersProvider.h */, - B5BEC8611CF3D32500153483 /* FYBUser.h */, - B5BEC8621CF3D32500153483 /* FYBUserConstants.h */, - B5BEC8631CF3D32500153483 /* FYBVirtualCurrencyClient.h */, - B5BEC8641CF3D32500153483 /* FYBVirtualCurrencyClientDelegate.h */, - B5BEC8651CF3D32500153483 /* FYBVirtualCurrencyErrorType.h */, - B5BEC8661CF3D32500153483 /* FYBVirtualCurrencyResponse.h */, - B5BEC8671CF3D32500153483 /* libFyberSDK-8.3.1.a */, - B5BEC8681CF3D32500153483 /* Resources */, - ); - path = "fyber-sdk-lib"; - sourceTree = ""; - }; - B5BEC8681CF3D32500153483 /* Resources */ = { - isa = PBXGroup; - children = ( - B5BEC8691CF3D32500153483 /* FYBBackIcon@2x.png */, - B5BEC86A1CF3D32500153483 /* FYBBackIconiPad@2x.png */, - B5BEC86B1CF3D32500153483 /* FYBBackIconiPhone@2x.png */, - ); - path = Resources; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -209,7 +232,7 @@ B574984E1CEFB0AB002F1EFF /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0810; + LastUpgradeCheck = 0930; ORGANIZATIONNAME = "Boon Media Inc."; TargetAttributes = { B57498551CEFB0AB002F1EFF = { @@ -222,6 +245,7 @@ developmentRegion = English; hasScannedForEncodings = 0; knownRegions = ( + English, en, ); mainGroup = B574984D1CEFB0AB002F1EFF; @@ -242,6 +266,7 @@ B574985C1CEFB0AB002F1EFF /* RNFyber.m in Sources */, B52AD3AB1DDA5401008AE987 /* RNFyberRewardedVideo.m in Sources */, B5BEC73A1CF3953700153483 /* RNFyberOfferWall.m in Sources */, + 420DF85220AE02ED002E5C74 /* RNFyberUser.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -257,14 +282,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -288,7 +321,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "$(inherited)"; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -304,14 +337,22 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -329,7 +370,7 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "$(inherited)"; - IPHONEOS_DEPLOYMENT_TARGET = 9.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; diff --git a/ios/RNFyber/RNFyberOfferWall.h b/ios/RNFyber/RNFyberOfferWall.h index f7eb364..9ec5e1f 100644 --- a/ios/RNFyber/RNFyberOfferWall.h +++ b/ios/RNFyber/RNFyberOfferWall.h @@ -4,8 +4,19 @@ // // Created by Ben Yee on 5/20/16. // +#if __has_include() +#import +#else #import "RCTBridgeModule.h" +#endif + +#if __has_include() +#import +#else +#import "RCTEventEmitter.h" +#endif + #import "FyberSDK.h" -@interface RNFyberOfferWall : NSObject +@interface RNFyberOfferWall : RCTEventEmitter @end diff --git a/ios/RNFyber/RNFyberOfferWall.m b/ios/RNFyber/RNFyberOfferWall.m index 8e15905..ac06624 100644 --- a/ios/RNFyber/RNFyberOfferWall.m +++ b/ios/RNFyber/RNFyberOfferWall.m @@ -6,9 +6,17 @@ // #import "RNFyberOfferWall.h" +NSString *const kOfferWallAvailable = @"offerWallAvailable"; +NSString *const kOfferWallUnavailable = @"offerWallUnavailable"; +NSString *const kOfferWallFailedToLoad = @"offerWallFailedToLoad"; +NSString *const kOfferWallDidStart = @"offerWallDidStart"; +NSString *const kOfferWallClosed = @"offerWallClosed"; + @implementation RNFyberOfferWall { } +@synthesize bridge = _bridge; + // Run on the main thread - (dispatch_queue_t)methodQueue { @@ -26,6 +34,15 @@ - (dispatch_queue_t)methodQueue [FyberSDK startWithOptions:options]; } +// Request the video before we need to display it +RCT_EXPORT_METHOD(requestOfferWall:(RCTResponseSenderBlock)callback) +{ + NSLog(@"requestOfferWall!"); + // Fyber iOS seems to have always Offers ... + [self sendEventWithName:kOfferWallAvailable body:nil]; + callback(@[[NSNull null]]); +} + // // Show the Offer Wall // @@ -35,7 +52,8 @@ - (dispatch_queue_t)methodQueue FYBOfferWallViewController *offerWallViewController = [FyberSDK offerWallViewController]; [offerWallViewController presentFromViewController:[UIApplication sharedApplication].delegate.window.rootViewController animated:YES completion:^{ - NSLog(@"Offer Wall presented"); + NSLog(@"Offer Wall presented"); + [self sendEventWithName:kOfferWallDidStart body:nil]; } dismiss:^(NSError *error) { @@ -47,7 +65,18 @@ - (dispatch_queue_t)methodQueue NSLog(@"Offer Wall error"); } + [self sendEventWithName:kOfferWallClosed body:nil]; }]; } +- (NSArray *)supportedEvents { + return @[kOfferWallAvailable, + kOfferWallUnavailable, + kOfferWallFailedToLoad, + kOfferWallDidStart, + kOfferWallClosed + ]; +} + + @end diff --git a/ios/RNFyber/RNFyberRewardedVideo.m b/ios/RNFyber/RNFyberRewardedVideo.m index be67802..63278d3 100644 --- a/ios/RNFyber/RNFyberRewardedVideo.m +++ b/ios/RNFyber/RNFyberRewardedVideo.m @@ -80,7 +80,7 @@ -(void)rewardedVideoControllerDidStartVideo:(FYBRewardedVideoController *)reward -(void)rewardedVideoController:(FYBRewardedVideoController *)rewardedVideoController didDismissVideoWithReason:(FYBRewardedVideoControllerDismissReason)reason{ - + NSString *reasonDescription; switch (reason) { case FYBRewardedVideoControllerDismissReasonError: @@ -93,9 +93,10 @@ -(void)rewardedVideoController:(FYBRewardedVideoController *)rewardedVideoContro break; case FYBRewardedVideoControllerDismissReasonAborted: reasonDescription = @"because the user explicitly closed it"; + [self sendEventWithName:kRewardedVideoClosedByUser body:nil]; break; } - + NSLog(@"The video ad was dismissed %@", reasonDescription); } diff --git a/ios/RNFyber/RNFyberUser.h b/ios/RNFyber/RNFyberUser.h new file mode 100644 index 0000000..61819c7 --- /dev/null +++ b/ios/RNFyber/RNFyberUser.h @@ -0,0 +1,11 @@ +// +// RNFyberUser.h +// RNFyberUser +// +// Created by Heiko Weber on 5/17/18. +// +#import "RCTBridgeModule.h" +#import "FyberSDK.h" + +@interface RNFyberUser : NSObject +@end diff --git a/ios/RNFyber/RNFyberUser.m b/ios/RNFyber/RNFyberUser.m new file mode 100644 index 0000000..e32ff4b --- /dev/null +++ b/ios/RNFyber/RNFyberUser.m @@ -0,0 +1,35 @@ +// +// RNFyberUser.m +// RNFyberUser +// +// Created by Heiko Weber on 5/17/18. +// +#import "RNFyberUser.h" + +@implementation RNFyberUser { +} + +// Run on the main thread +- (dispatch_queue_t)methodQueue +{ + return dispatch_get_main_queue(); +} + +RCT_EXPORT_MODULE(); + +// set Fyber user properties +RCT_EXPORT_METHOD(set:(NSDictionary *)uprops) +{ + if (uprops[@"age"] != nil && [uprops[@"age"] respondsToSelector:@selector(integerValue)]) { + [[FyberSDK instance].user setAge:[uprops[@"age"] integerValue]]; + } + if (uprops[@"custom"] != nil && [uprops[@"custom"] isKindOfClass:[NSDictionary class]]) { + [[FyberSDK instance].user setCustomParameters:uprops[@"custom"]]; + } + + if (uprops[@"userid"] != nil && [uprops[@"userid"] isKindOfClass:[NSString class]]) { + [FyberSDK instance].userId = uprops[@"userid"]; + } +} + +@end diff --git a/ios/fyber-sdk-lib/FYBBaseNetwork.h b/ios/fyber-sdk-lib/FYBBaseNetwork.h index 0eae5b0..272dd73 100755 --- a/ios/fyber-sdk-lib/FYBBaseNetwork.h +++ b/ios/fyber-sdk-lib/FYBBaseNetwork.h @@ -58,4 +58,6 @@ typedef NS_OPTIONS(NSUInteger, FYBNetworkSupport) { - (void)startRewardedVideoAdapter:(NSDictionary *)data; - (void)startBannerAdapter:(NSDictionary *)data; +- (void)setGDPRConsent:(NSInteger)gdprConsent; + @end diff --git a/ios/fyber-sdk-lib/FYBUser.h b/ios/fyber-sdk-lib/FYBUser.h index 9a08a08..0a53b27 100755 --- a/ios/fyber-sdk-lib/FYBUser.h +++ b/ios/fyber-sdk-lib/FYBUser.h @@ -208,6 +208,31 @@ */ - (void)setCustomParameters:(NSDictionary *)parameters; +/** + * Sets the consent status of the user. Fyber will only be able to show targeted advertising if the user consented. + * + * @param gdprConsent The consent status of the user + * + * @since v8.21.0 + */ +- (void)setGDPRConsent:(BOOL)gdprConsent; + +/** + * Sets the consent data. + * + * @param gdprConsentData The consent data + * + * @since v8.22.0 + */ +- (void)setGDPRConsentData:(NSDictionary *)gdprConsentData; + +/** + * Clears the consent data of the user. + * + * @since v8.22.0 + */ +- (void)clearGDPRConsentData; + ///------------------------- /// Getters ///------------------------- diff --git a/ios/fyber-sdk-lib/FYB_SDK_versions.h b/ios/fyber-sdk-lib/FYB_SDK_versions.h index a4a94a2..b77777c 100755 --- a/ios/fyber-sdk-lib/FYB_SDK_versions.h +++ b/ios/fyber-sdk-lib/FYB_SDK_versions.h @@ -5,5 +5,5 @@ // static const NSInteger FYBSDKReleaseVersionNumberMajor = 8; -static const NSInteger FYBSDKReleaseVersionNumberMinor = 16; -static const NSInteger FYBSDKReleaseVersionNumberPatch = 1; +static const NSInteger FYBSDKReleaseVersionNumberMinor = 22; +static const NSInteger FYBSDKReleaseVersionNumberPatch = 0; diff --git a/ios/fyber-sdk-lib/FyberSDK.h b/ios/fyber-sdk-lib/FyberSDK.h index d91c846..f810a26 100755 --- a/ios/fyber-sdk-lib/FyberSDK.h +++ b/ios/fyber-sdk-lib/FyberSDK.h @@ -15,6 +15,7 @@ @import StoreKit; @import SystemConfiguration; @import QuartzCore; +@import WebKit; #endif #import "FYBBannerController.h" diff --git a/ios/fyber-sdk-lib/Resources/FYBIntegrationAnalyzerViewController.xib b/ios/fyber-sdk-lib/Resources/FYBIntegrationAnalyzerViewController.xib index e1af673..0f02e85 100644 --- a/ios/fyber-sdk-lib/Resources/FYBIntegrationAnalyzerViewController.xib +++ b/ios/fyber-sdk-lib/Resources/FYBIntegrationAnalyzerViewController.xib @@ -22,7 +22,7 @@ -