2016-05-11 17 views
5

Tôi đang tích hợp MoPub SDK để dàn xếp quảng cáo từ mạng Google AdMob. Tôi có thể nhận được AD để hiển thị sau khi triển khai customEvent và Adapter của riêng tôi, nhưng tôi không thể có được AD để xử lý các sự kiện nhấp chuột một mình. Như trong khi tôi nhấp vào quảng cáo gốc của AdMob, nó sẽ không hướng tôi đến bất kỳ đâu. Khi sử dụng CustomEvent và Bộ điều hợp của Facebook và Flurry, các lần nhấp được xử lý tự động. Bất cứ ai có kinh nghiệm về chủ đề này?Hiển thị quảng cáo gốc của AdMob với MoPub (iOS)

Cảm ơn trước. Mã bên dưới:

MPGoogleAdMobCustomEvent

@interface MPGoogleAdMobCustomEvent() 
@property(nonatomic, strong)GADAdLoader *loader; 
@end 

@implementation MPGoogleAdMobCustomEvent 

- (void)requestAdWithCustomEventInfo:(NSDictionary *)info 
{ 
    MPLogInfo(@"MOPUB: requesting AdMob Native Ad"); 

    NSString *adUnitID = [info objectForKey:@"adUnitID"]; 

    if (!adUnitID) { 

     [self.delegate nativeCustomEvent:self didFailToLoadAdWithError:MPNativeAdNSErrorForInvalidAdServerResponse(@"MOPUB: No AdUnitID from GoogleAdMob")]; 

     return; 
    } 

    self.loader = [[GADAdLoader alloc] initWithAdUnitID:adUnitID rootViewController:nil adTypes:@[kGADAdLoaderAdTypeNativeContent] options:nil]; 
    self.loader.delegate = self; 
    GADRequest *request = [GADRequest request]; 

#if (TARGET_OS_SIMULATOR) 

    request.testDevices = @[ kGADSimulatorID ]; 

#endif 

    CLLocation *location = [[CLLocationManager alloc] init].location; 
    if (location) { 
     [request setLocationWithLatitude:location.coordinate.latitude 
           longitude:location.coordinate.longitude 
           accuracy:location.horizontalAccuracy]; 
    } 
    request.requestAgent = @"MoPub"; 
    [self.loader loadRequest:request]; 
} 

- (void)adLoader:(GADAdLoader *)adLoader didReceiveNativeContentAd:(GADNativeContentAd *)nativeContentAd 
{ 
    MPLogDebug(@"MOPUB: Did receive nativeAd"); 

    MPGoogleAdMobNativeAdAdapter *adapter = [[MPGoogleAdMobNativeAdAdapter alloc] initWithGADNativeContentAd:nativeContentAd]; 
    adapter.url = nativeContentAd.advertiser; 
    MPNativeAd *interfaceAd = [[MPNativeAd alloc] initWithAdAdapter:adapter]; 

    NSMutableArray *imageArray = [NSMutableArray array]; 

    for (GADNativeAdImage *images in nativeContentAd.images) { 

     [imageArray addObject:images.imageURL]; 

    } 


    [super precacheImagesWithURLs:imageArray completionBlock:^(NSArray *errors) { 

     if ([errors count]) { 
      [self.delegate nativeCustomEvent:self didFailToLoadAdWithError:errors[0]]; 
     } else { 
      [self.delegate nativeCustomEvent:self didLoadAd:interfaceAd]; 
     } 

    }]; 
} 

- (void)adLoader:(GADAdLoader *)adLoader didFailToReceiveAdWithError:(GADRequestError *)error 
{ 
    MPLogDebug(@"MOPUB: AdMob ad failed to load with error (customEvent): %@", error.description); 
    [self.delegate nativeCustomEvent:self didFailToLoadAdWithError:error]; 
} 

@end 

MPGoogleAdMobNativeAdAdapter

@interface MPGoogleAdMobNativeAdAdapter()<GADNativeAdDelegate> 
@property(nonatomic, strong)NSDictionary *properties; 
@end 

@implementation MPGoogleAdMobNativeAdAdapter 

- (instancetype)initWithGADNativeContentAd:(GADNativeContentAd *)contentAD 
{ 
    self = [super init]; 
    if (self) { 
     self.contentAd = contentAD; 
     self.contentAd.delegate = self; 
     self.properties = [self convertAssetsToProperties:contentAD]; 
    } 
    return self; 
} 

- (NSDictionary *)convertAssetsToProperties:(GADNativeContentAd *)adNative 
{ 
    self.contentAd = adNative; 
    NSMutableDictionary * dictionary = [NSMutableDictionary dictionary]; 
    if (adNative.headline) { 
     dictionary[kAdTitleKey] = adNative.headline; 
    } 
    if (adNative.body) { 
     dictionary[kAdTextKey] = adNative.body; 
    } 
    if (adNative.images[0]) { 
     dictionary[kAdMainImageKey] = ((GADNativeAdImage *)adNative.images[0]).imageURL.absoluteString; 
    } 
    if (adNative.callToAction) { 
     dictionary[kAdCTATextKey] = adNative.callToAction; 
    } 
    return [dictionary copy]; 
} 

#pragma mark MPNativeAdAdapter 
- (NSTimeInterval)requiredSecondsForImpression 
{ 
    return 0.0; 
} 

- (NSURL *)defaultActionURL 
{ 
    return nil; 
} 

- (BOOL)enableThirdPartyClickTracking 
{ 
    return YES; 
} 


- (void)willAttachToView:(UIView *)view 
{ 
    self.contentAd.rootViewController = [self.delegate viewControllerForPresentingModalView]; 
} 

- (void)didDetachFromView:(UIView *)view 
{ 
    self.contentAd.rootViewController = nil; 
} 

#pragma mark GADNativeAdDelegate 

- (void)nativeAdWillPresentScreen:(GADNativeAd *)nativeAd 
{ 
    if ([self.delegate respondsToSelector:@selector(nativeAdWillPresentModalForAdapter:)]) { 
     [self.delegate nativeAdWillPresentModalForAdapter:self]; 
    } 
} 

- (void)nativeAdDidDismissScreen:(GADNativeAd *)nativeAd 
{ 
    if ([self.delegate respondsToSelector:@selector(nativeAdDidDismissModalForAdapter:)]) { 
     [self.delegate nativeAdDidDismissModalForAdapter:self]; 
    } 
} 

- (void)nativeAdWillLeaveApplication:(GADNativeAd *)nativeAd 
{ 
    if ([self.delegate respondsToSelector:@selector(nativeAdWillLeaveApplicationFromAdapter:)]) { 
     [self.delegate nativeAdWillLeaveApplicationFromAdapter:self]; 
    } 
} 

@end 




` 

Trả lời

0

Nếu bạn đang gặp UI tùy chỉnh của bạn cho quảng cáo AdMob, sau đó sẽ có một nút mà bạn sẽ sử dụng cho callToAction phần.

Trước hết bạn cần phải thêm một chọn để phát hiện hành động nhấp chuột, để làm thêm bộ chọn cho nút đó

[callToActionButton addTarget:self action:@selector(adCalled:) forControlEvents:UIControlEventTouchUpInside]; 

Sau đó thực hiện các phương pháp adCalled để có được những nhấp chuột & gọi phương pháp này hơn nữa, bên dưới là mã để bạn tham khảo Dưới đây là ví dụ mà tôi đã sử dụng để lấy đối tượng quảng cáo từ chế độ xem bộ sưu tập của tôi & thì tôi đang chuyển hướng nó.

- (void)adCalled:(id)sender 
{ 
    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:mainCollectionView]; // Get the button position 
    NSIndexPath *indexPath = [collectionView indexPathForItemAtPoint:buttonPosition]; // Get the index path of button so that I can retrieve the correct ad object 
    id selectedAd = [adArray objectAtIndex:indexPath.row]; 
    if ([selectedAd isKindOfClass:[GADNativeContentAd class]]) { 
     NSString *url = [selectedAd valueForKey:@"googleClickTrackingURLString"]; 
     NSLog(@"URL is :%@", url); 
     NSURL *googleUrl = [NSURL URLWithString:url]; 
     if ([[UIApplication sharedApplication] canOpenURL: googleUrl]) { 
      [[UIApplication sharedApplication] openURL:googleUrl]; 
     } 
    } 
} 

Sử dụng điều này tôi có thể mở liên kết web bằng url theo dõi google.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan