Я не могу использовать объявления AdMob или iAd для работы в iOS ActionExtension или ShareExtension - кто-нибудь получил любую из них, чтобы успешно работать, и если да, как? Как AdMob, так и iAd работают нормально в разделе «контейнер» приложения ActionExtension (работает либо в Simulator, либо на самом устройстве), но, похоже, не работает в Extension. (Выполняется в части расширения приложения, ни одно из событий не запускается, и не отображается никаких объявлений, но нет никаких признаков ошибок, тестирование в iOS 8 или iOS 9.)Невозможно получить рекламное объявление AdMob или iAd для работы в iOS ActionExtension или ShareExtension
(Обратите внимание, что я не пытаясь запустить их вместе, я начал с AdMob и не мог заставить это работать, поэтому я заменил его на iAd, но не повезло и там.)
Если ни одна из этих работ не была успешно использована, основанный компонент в ActionExtension или ShareExtension? (К сожалению, все функциональные возможности этого приложения в части выдвижения поэтому единственный шанс монетизировать что-либо в части выдвижения.)
Update 1:
Я также попытался AdMob межстраничных объявлений, но это же проблема. Объекты получают экземпляр, но события никогда не срабатывают.
Последняя итерация образцов кода:
Обратите внимание, что в то время как образцы первого кода в C# с использованием Xamarin.iOS, крошечное немного информации, которую я нашел с помощью массивного Googling показывает аналогичные вопросы (большинство без ответов, к сожалению) в Objective-C и Swift, поэтому проблема, похоже, связана с самой обработкой Extension, а не с обертками Xamari. Кроме того, обе версии AdMob SDK v7.2.2 и v7.5.0 показали ту же проблему.
«Обновление № 2» содержит образцы кода в Objective-C - они также терпят неудачу точно так же.
ОВР C# Версия:
public partial class ActionViewController : UIViewController {
ADBannerView _adBannerView;
public override void ViewDidLoad() {
base.ViewDidLoad();
// Hook in the iAd component
_adBannerView = new ADBannerView (iAd.ADAdType.Banner) {
Hidden = true
};
adContainerView.AddSubview (_adBannerView);
_adBannerView.FailedToReceiveAd += (object sender, AdErrorEventArgs e) => {
Console.WriteLine ("********** Failed to load ad: " + e.Error.LocalizedDescription);
_adBannerView.Hidden = true;
};
_adBannerView.AdLoaded += (sender, args) => {
Console.WriteLine ("********** Successfully loaded ad.");
_adBannerView.Hidden = false;
};
}
}
Google AdMob C# Версия:
public partial class ActionViewController : UIViewController {
const string AdmobID = "ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxxxxxx";
BannerView adView;
bool _viewOnScreen = false;
public override void ViewDidLoad() {
base.ViewDidLoad();
// === banner ad ===
adView = new BannerView (size: AdSizeCons.Banner, origin: new CGPoint (0, 0)) {
AdUnitID = AdmobID,
RootViewController = this
};
adView.AdReceived += (object sender, EventArgs e) => {
Console.WriteLine ("********** Banner Ad received");
if (! _viewOnScreen) {
adContainerView.AddSubview(adView);
_viewOnScreen = true;
}
};
adView.ReceiveAdFailed += (sender, e) => {
Console.WriteLine ("********** BANNER AD FAILED");
};
Request request = Request.GetDefaultRequest();
#if DEBUG
request.TestDevices = new string[] { Request.GetSimulatorId().ToString() };
#endif
adView.LoadRequest (request);
// === AdMob Interstitial Ads ===
Interstitial adInterstitial = new Interstitial("ca-app-pub-xxxxxxxxxxxxxxxxxxxxxxxxxxx");
Request requestInterstitial = Request.GetDefaultRequest();
adInterstitial.AdReceived += (sender, args) =>
{
Console.WriteLine ("********** INTERSTITAL: Successfully received ad");
};
adInterstitial.ReceiveAdFailed += (sender, e) => {
Console.WriteLine ("********** INTERSTITAL: 'Receive Ad' FAILED");
};
#if DEBUG
requestInterstitial.TestDevices = new string[] { Request.GetSimulatorId().ToString() };
#endif
adInterstitial.LoadRequest(requestInterstitial);
}
}
Update 2:
Я также попытался МААШ (ADBannerView
) в ShareExt как в C#, так и в Objective-C. Те же результаты, что и выше на обоих языках: компоненты создаются, но никаких событий не запускается.
Кроме того, проксирование HTTP & HTTPS-трафик через другую машину, на которой работает Fiddler, подтверждает, что HTTP-запрос или запрос HTTPS не выполняются компонентом iAd, который выполняется в части расширения приложения.
ОВР Objective-C версии (показывать только ОВР-код, связанный с):
TestViewController.h:
#import <UIKit/UIKit.h>
#import <iAd/iAd.h>
@protocol ExtensionContextHolder <NSObject>
- (NSExtensionContext *)extensionContext;
@end
@interface TestViewController : UIViewController<ADBannerViewDelegate>
- (instancetype)initWithExtensionContextHolder:(id<ExtensionContextHolder>)extensionContextHolder;
@end
TestViewController.м:
@implementation TestViewController
- (void)viewDidLoad {
[super viewDidLoad];
ADBannerView *adView = [[ADBannerView alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 50, 320, 50)];
adView.delegate = self;
[self.view addSubview:adView];
}
- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave {
return YES;
}
- (void)bannerViewDidLoadAd:(ADBannerView *)banner {
NSLog(@"********** LOADED AN AD **********");
}
- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {
NSLog(@"********** FAILED TO RECEIVE AN AD **********");
}
@end
Редактируйте свой вопрос, чтобы включить соответствующий код, относящийся к тому, что вы пробовали. –
Добавлен код выше (как в вариантах C#, так и в Objective-C, а также как для iAds, так и для AdMob). Кто-нибудь видит, почему это не должно работать должным образом? – BillB