Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
db4f70d
Add tracking native API
mrousavy Dec 10, 2020
e18bd9e
Add iOS 14 tracking TS API
mrousavy Dec 10, 2020
e11b77d
Add `setAdvertiserIDCollectionEnabled` native function
mrousavy Dec 10, 2020
6e18806
Add setAdvertiserIDCollectionEnabled for Android
mrousavy Dec 10, 2020
9b8e033
Update deprecated stuff
mrousavy Dec 10, 2020
5b04aeb
Update README.md
mrousavy Dec 10, 2020
8baae84
Update EXNativeAdManager.m
mrousavy Dec 10, 2020
4b811db
Dereference location pointer
mrousavy Dec 10, 2020
aaa1515
Replace setIsChildDirected with setMixedAudience
mrousavy Dec 10, 2020
7e17ac3
Load ads using new load callback API
mrousavy Dec 10, 2020
d2652d6
Cleanup imports
mrousavy Dec 10, 2020
a9b3365
Replace removed AdChoicesView with AdOptionsView
mrousavy Dec 10, 2020
5ae642e
Replace removed AdIconView with MediaView
mrousavy Dec 10, 2020
48f2f53
[iOS] Replace FBAdIconView with FBMediaView
mrousavy Dec 10, 2020
cab1167
Delete package-lock.json
mrousavy Dec 10, 2020
96a65a6
Delete package-lock.json
mrousavy Dec 10, 2020
e5c7144
Delete package-lock.json
mrousavy Dec 10, 2020
2adfbee
Delete package-lock.json
mrousavy Dec 10, 2020
6014968
Update README for new features
mrousavy Dec 10, 2020
e182cca
Add status enum explanation
mrousavy Dec 10, 2020
5f1abbf
Pin audience network SDK version
mrousavy Dec 10, 2020
82a3d0c
Replace patch version with `+`
mrousavy Dec 10, 2020
66f17a0
Merge branch 'feature/ios14-tracking-api' into fix/deprecated-apis
mrousavy Dec 10, 2020
27bd892
Merge branch 'master' into fix/deprecated-apis
mrousavy Dec 10, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package suraj.tiwari.reactnativefbads;

import com.facebook.ads.AdIconView;
import com.facebook.ads.MediaView;
import com.facebook.react.uimanager.SimpleViewManager;
import com.facebook.react.uimanager.ThemedReactContext;

public class AdIconViewManager extends SimpleViewManager<AdIconView> {
public class AdIconViewManager extends SimpleViewManager<MediaView> {
private static final String REACT_CLASS = "AdIconView";

@Override
Expand All @@ -13,7 +13,7 @@ public String getName() {
}

@Override
protected AdIconView createViewInstance(ThemedReactContext reactContext) {
return new AdIconView(reactContext);
protected MediaView createViewInstance(ThemedReactContext reactContext) {
return new MediaView(reactContext);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@


public class BannerView extends ReactViewGroup implements AdListener, LifecycleEventListener {

private ReactContext mContext;
private AdView myAdView;
private String mPlacementId;
Expand Down Expand Up @@ -86,9 +85,7 @@ public void onLoggingImpression(Ad ad) {
private void createAdViewIfCan() {
if (myAdView == null && mPlacementId != null && mSize != null) {
myAdView = new AdView(this.getContext(), mPlacementId, mSize);
myAdView.setAdListener(this);

myAdView.loadAd();
myAdView.loadAd(myAdView.buildLoadAdConfig().withAdListener(this).build());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,7 @@ public void showAd(String placementId, Promise p) {
mViewAtOnce = true;
mPromise = p;
mInterstitial = new InterstitialAd(reactContext, placementId);
mInterstitial.setAdListener(this);
mInterstitial.loadAd();
mInterstitial.loadAd(mInterstitial.buildLoadAdConfig().withAdListener(this).build());
}

@ReactMethod
Expand All @@ -61,8 +60,7 @@ public void preloadAd(String placementId, Promise p) {
mViewAtOnce = false;
mPromise = p;
mInterstitial = new InterstitialAd(reactContext, placementId);
mInterstitial.setAdListener(this);
mInterstitial.loadAd();
mInterstitial.loadAd(mInterstitial.buildLoadAdConfig().withAdListener(this).build());
}

@ReactMethod
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
*/
package suraj.tiwari.reactnativefbads;

import com.facebook.ads.AdOptionsView;
import com.facebook.ads.NativeAd;
import com.facebook.ads.AdChoicesView;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.uimanager.ThemedReactContext;
import com.facebook.react.views.view.ReactViewGroup;
Expand All @@ -22,7 +22,7 @@ public NativeAdChoicesView(ThemedReactContext context) {
}

public void setNativeAd(NativeAd nativeAd) {
AdChoicesView adChoicesView = new AdChoicesView(mContext, nativeAd, true);
AdOptionsView adChoicesView = new AdOptionsView(mContext, nativeAd, null);
adChoicesView.measure(adChoicesView.getMeasuredWidth(), adChoicesView.getMeasuredHeight());
adChoicesView.layout(0, 0, adChoicesView.getMeasuredWidth(), adChoicesView.getMeasuredHeight());
adChoicesView.bringToFront();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import android.view.View;

import com.facebook.ads.AdError;
import com.facebook.ads.AdIconView;
import com.facebook.ads.MediaView;
import com.facebook.ads.NativeAdsManager;
import com.facebook.react.bridge.Arguments;
Expand Down Expand Up @@ -153,18 +152,20 @@ public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
try {
NativeAdView nativeAdView = null;
MediaView mediaView = null;
AdIconView adIconView = null;
MediaView adIconView = null;

if (adTag != -1) {
nativeAdView = (NativeAdView) nativeViewHierarchyManager.resolveView(adTag);
} else {
throw new Exception("Native Ad View was not set!");
}

if (mediaViewTag != -1) {
mediaView = (MediaView) nativeViewHierarchyManager.resolveView(mediaViewTag);
}

if (adIconViewTag != -1) {
adIconView = (AdIconView) nativeViewHierarchyManager.resolveView(adIconViewTag);
adIconView = (MediaView) nativeViewHierarchyManager.resolveView(adIconViewTag);
}

List<View> clickableViews = new ArrayList<>();
Expand All @@ -174,12 +175,11 @@ public void execute(NativeViewHierarchyManager nativeViewHierarchyManager) {
clickableViews.add(view);
}

Log.w("NativeAdManagerClickableViewsTags", Integer.toString(clickableViewsTags.size()));
Log.w("NativeAdManagerClickableViews", Integer.toString(clickableViews.size()) );
Log.w("ClickableViewsTags", Integer.toString(clickableViewsTags.size()));
Log.w("ClickableViews", Integer.toString(clickableViews.size()) );

nativeAdView.registerViewsForInteraction(mediaView, adIconView, clickableViews);
promise.resolve(null);

} catch (ClassCastException e) {
promise.reject("E_CANNOT_CAST", e);
} catch (IllegalViewOperationException e) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
package suraj.tiwari.reactnativefbads;

import android.graphics.drawable.Icon;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;

import com.facebook.ads.AdChoicesView;
import com.facebook.ads.AdIconView;
import com.facebook.ads.MediaView;
import com.facebook.ads.NativeAd;
import com.facebook.react.bridge.Arguments;
Expand All @@ -15,7 +9,6 @@
import com.facebook.react.uimanager.events.RCTEventEmitter;
import com.facebook.react.views.view.ReactViewGroup;

import java.util.ArrayList;
import java.util.List;

public class NativeAdView extends ReactViewGroup {
Expand Down Expand Up @@ -72,7 +65,7 @@ public void setNativeAd(NativeAd nativeAd) {
mEventEmitter.receiveEvent(getId(), "onAdLoaded", event);
}

public void registerViewsForInteraction(MediaView mediaView, AdIconView adIconView, List<View> clickableViews) {
public void registerViewsForInteraction(MediaView mediaView, MediaView adIconView, List<View> clickableViews) {
mNativeAd.registerViewForInteraction(this, mediaView, adIconView, clickableViews);
}

Expand Down
2 changes: 1 addition & 1 deletion ios/ReactNativeAdsFacebook/AdChoiceView.m
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ - (void)createViewIfCan:(NSString *)placementId :(UIRectCorner *) location :(BOO
FBNativeAdsManager *_adsManager = [nativeAdManager getFBAdsManager:placementId];
FBNativeAd *nativeAd = [_adsManager nextNativeAd];
FBAdChoicesView *adChoicesView = [[FBAdChoicesView alloc] initWithNativeAd:nativeAd expandable:expandable];
[adChoicesView updateFrameFromSuperview:location];
[adChoicesView updateFrameFromSuperview:*location];
[self addSubview:adChoicesView];
}

Expand Down
2 changes: 1 addition & 1 deletion ios/ReactNativeAdsFacebook/EXAdIconViewManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ @implementation EXAdIconViewManager

- (UIView *)view
{
return [[FBAdIconView alloc] init];
return [[FBMediaView alloc] init];
}

@end
6 changes: 3 additions & 3 deletions ios/ReactNativeAdsFacebook/EXAdSettingsManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ - (void)setBridge:(RCTBridge *)bridge

RCT_EXPORT_METHOD(setIsChildDirected:(BOOL)isDirected)
{
[FBAdSettings setIsChildDirected:isDirected];
[FBAdSettings setMixedAudience:isDirected];
_isChildDirected = isDirected;
}

Expand Down Expand Up @@ -132,7 +132,7 @@ - (void)setBridge:(RCTBridge *)bridge

- (void)bridgeDidForeground:(NSNotification *)notification
{
[FBAdSettings setIsChildDirected:_isChildDirected];
[FBAdSettings setMixedAudience:_isChildDirected];
[FBAdSettings setMediationService:_mediationService];
[FBAdSettings setUrlPrefix:_urlPrefix];
[FBAdSettings setLogLevel:_logLevel];
Expand All @@ -141,7 +141,7 @@ - (void)bridgeDidForeground:(NSNotification *)notification

- (void)bridgeDidBackground:(NSNotification *)notification
{
[FBAdSettings setIsChildDirected:NO];
[FBAdSettings setMixedAudience:NO];
[FBAdSettings setMediationService:@""];
[FBAdSettings setUrlPrefix:@""];
[FBAdSettings setLogLevel:FBAdLogLevelLog];
Expand Down
27 changes: 12 additions & 15 deletions ios/ReactNativeAdsFacebook/EXNativeAdManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ + (BOOL)requiresMainQueueSetup
{
[_bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *,UIView *> *viewRegistry) {
FBMediaView *mediaView = nil;
FBAdIconView *adIconView = nil;
FBMediaView *adIconView = nil;
EXNativeAdView *nativeAdView = nil;

if ([viewRegistry objectForKey:mediaViewTag] == nil) {
Expand Down Expand Up @@ -82,10 +82,10 @@ + (BOOL)requiresMainQueueSetup
}

if ([viewRegistry objectForKey:adIconViewTag]) {
if ([[viewRegistry objectForKey:adIconViewTag] isKindOfClass:[FBAdIconView class]]) {
adIconView = (FBAdIconView *)[viewRegistry objectForKey:adIconViewTag];
if ([[viewRegistry objectForKey:adIconViewTag] isKindOfClass:[FBMediaView class]]) {
adIconView = (FBMediaView *)[viewRegistry objectForKey:adIconViewTag];
} else {
reject(@"E_INVALID_VIEW_CLASS", @"View returned for passed ad icon view tag is not an instance of FBAdIconView", nil);
reject(@"E_INVALID_VIEW_CLASS", @"View returned for passed ad icon view tag is not an instance of FBMediaView", nil);
return;
}
}
Expand All @@ -107,18 +107,15 @@ + (BOOL)requiresMainQueueSetup

RCT_EXPORT_METHOD(init:(NSString *)placementId withAdsToRequest:(nonnull NSNumber *)adsToRequest)
{

FBNativeAdsManager *adsManager = [[FBNativeAdsManager alloc] initWithPlacementID:placementId
FBNativeAdsManager *adsManager = [[FBNativeAdsManager alloc] initWithPlacementID:placementId
forNumAdsRequested:[adsToRequest intValue]];
_myAdChoiceViewPlacementId = placementId;
[adsManager setDelegate:self];

_myAdChoiceViewPlacementId = placementId;

[adsManager setDelegate:self];

dispatch_async(dispatch_get_main_queue(), ^{
[adsManager loadAds];
[self->_adsManagers setValue:adsManager forKey:placementId];
});
dispatch_async(dispatch_get_main_queue(), ^{
[adsManager loadAds];
[self->_adsManagers setValue:adsManager forKey:placementId];
});
}

RCT_EXPORT_METHOD(setMediaCachePolicy:(NSString*)placementId cachePolicy:(FBNativeAdsCachePolicy)cachePolicy)
Expand Down Expand Up @@ -156,7 +153,7 @@ - (void)nativeAdsFailedToLoadWithError:(NSError *)errors

- (UIView *)view
{
return [[EXNativeAdView alloc] initWithBridge:_bridge];
return [[EXNativeAdView alloc] initWithBridge:_bridge];
}

RCT_EXPORT_VIEW_PROPERTY(onAdLoaded, RCTBubblingEventBlock)
Expand Down
2 changes: 1 addition & 1 deletion ios/ReactNativeAdsFacebook/EXNativeAdView.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@
@property (nonatomic, strong) FBNativeAd *nativeAd;

- (instancetype)initWithBridge:(RCTBridge *)bridge;
- (void)registerViewsForInteraction:(FBMediaView *)mediaView adIcon:(FBAdIconView *)adIconView clickableViews:(NSArray<UIView *> *)clickable;
- (void)registerViewsForInteraction:(FBMediaView *)mediaView adIcon:(FBMediaView *)adIconView clickableViews:(NSArray<UIView *> *)clickable;

@end
4 changes: 2 additions & 2 deletions ios/ReactNativeAdsFacebook/EXNativeAdView.m
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge
- (void)setOnAdLoaded:(RCTBubblingEventBlock)onAdLoaded
{
_onAdLoaded = onAdLoaded;

if (_nativeAd != nil) {
[self callOnAdLoadedWithAd:_nativeAd];
}
Expand Down Expand Up @@ -50,7 +50,7 @@ - (void)callOnAdLoadedWithAd:(FBNativeAd *)nativeAd
}
}

- (void)registerViewsForInteraction:(FBMediaView *)mediaView adIcon:(FBAdIconView *)adIconView clickableViews:(NSArray<UIView *> *)clickable
- (void)registerViewsForInteraction:(FBMediaView *)mediaView adIcon:(FBMediaView *)adIconView clickableViews:(NSArray<UIView *> *)clickable
{
[_nativeAd registerViewForInteraction:self
mediaView:mediaView
Expand Down