Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.
 
 
 

69 рядки
2.6 KiB

  1. // Copyright 2014 Google Inc. All Rights Reserved.
  2. #import "GADUAdLoader.h"
  3. #import "GADUNativeCustomTemplateAd.h"
  4. #import "GADUObjectCache.h"
  5. #import "GADUPluginUtil.h"
  6. #import "UnityAppController.h"
  7. @interface GADUAdLoader () <GADAdLoaderDelegate, GADNativeCustomTemplateAdLoaderDelegate>
  8. @end
  9. @implementation GADUAdLoader
  10. - (instancetype)initWithAdLoaderClientReference:(GADUTypeAdLoaderClientRef *)adLoaderClient
  11. adUnitID:(NSString *)adUnitID
  12. templateIDs:(NSArray *)templateIDs
  13. adTypes:(NSArray *)adTypes
  14. options:(NSArray *)options {
  15. self = [super init];
  16. if (self) {
  17. _adLoaderClient = adLoaderClient;
  18. _adLoader = [[GADAdLoader alloc] initWithAdUnitID:adUnitID
  19. rootViewController:[GADUPluginUtil unityGLViewController]
  20. adTypes:adTypes
  21. options:options];
  22. _adLoader.delegate = self;
  23. _templateIDs = [NSArray arrayWithArray:templateIDs];
  24. _adTypes = [NSArray arrayWithArray:adTypes];
  25. }
  26. return self;
  27. }
  28. - (void)loadRequest:(GADRequest *)request {
  29. if (!self.adLoader) {
  30. NSLog(@"GoogleMobileAdsPlugin: AdLoader is nil. Ignoring ad request.");
  31. return;
  32. }
  33. [self.adLoader loadRequest:request];
  34. }
  35. - (NSArray *)nativeCustomTemplateIDsForAdLoader:(GADAdLoader *)adLoader {
  36. return self.templateIDs;
  37. }
  38. - (void)adLoader:(GADAdLoader *)adLoader didFailToReceiveAdWithError:(GADRequestError *)error {
  39. if (self.adFailedCallback) {
  40. NSString *errorMsg = [NSString
  41. stringWithFormat:@"Failed to receive ad with error: %@", [error localizedFailureReason]];
  42. self.adFailedCallback(self.adLoaderClient,
  43. [errorMsg cStringUsingEncoding:NSUTF8StringEncoding]);
  44. }
  45. }
  46. - (void)adLoader:(GADAdLoader *)adLoader
  47. didReceiveNativeCustomTemplateAd:(GADNativeCustomTemplateAd *)nativeCustomTemplateAd {
  48. if (self.customTemplateAdReceivedCallback) {
  49. GADUObjectCache *cache = [GADUObjectCache sharedInstance];
  50. GADUNativeCustomTemplateAd *internalNativeAd =
  51. [[GADUNativeCustomTemplateAd alloc] initWithAd:nativeCustomTemplateAd];
  52. [cache.references setObject:internalNativeAd forKey:[internalNativeAd gadu_referenceKey]];
  53. self.customTemplateAdReceivedCallback(
  54. self.adLoaderClient, (__bridge GADUTypeNativeCustomTemplateAdRef)internalNativeAd,
  55. [nativeCustomTemplateAd.templateID cStringUsingEncoding:NSUTF8StringEncoding]);
  56. }
  57. }
  58. @end