0

我正在尝试使用 Heyzap SDK 在 iOS 上进行应用内购买后停止所有广告。

我试过了:

-(void) OnRemoveADS {
  ...

 [self buyFeatureRemoveADS];

 [HeyzapAds nil];
 [HeyzapAds removeFromSuperview];
  HZInterstitialAd = nil;
}

它们都会产生 Xcode 错误。

我知道我将不得不从不同的位置关闭它们,因为我的横幅广告是与插页式广告分开初始化的。

就像在这个方法的 else 语句中一样:

-(id) init {
    if (self = [super init]) {

    g_bRemoveADS=[[NSUserDefaults standardUserDefaults] boolForKey: @"REMOVEADS"];

    if(!g_bRemoveADS)
    {

       [[[[UIApplication sharedApplication] keyWindow] rootViewController] view];

        HZBannerAdOptions *options = [[HZBannerAdOptions alloc] init];
        //options.presentingViewController = self;

        [HZBannerAd placeBannerInView:self.view
                             position:HZBannerPositionBottom
                              options:options
                              success:^(HZBannerAd *banner) {
                                  NSLog(@"Ad Shown!");

                              } failure:^(NSError *error) {
                                  NSLog(@"Error = %@",error);
                              }];
    }

    else {

        // Stop banner ads here

    }

在 MKStoreManger 中,有一些去除广告的方法:

- (void) buyFeatureRemoveADs {
   [self buyFeature:featureRemoveADSId];
}

静态字符串:

  static NSString *featureRemoveADSId = IAP_RemoveADS;
4

1 回答 1

0

我是 Heyzap 的一名 iOS 工程师。

禁用广告时不显示插页式广告、视频广告或激励性广告非常容易:只需g_bRemoveADS BOOL在显示之前检查值:

g_bRemoveADS = [[NSUserDefaults standardUserDefaults] boolForKey: @"REMOVEADS"];

// For HZInterstitialAd, HZVideoAd, and HZIncentivizedAd, just check the BOOL to see if an ad should be shown
if (!g_bRemoveADS) {
    [HZInterstitialAd show];
}

对于HZBannerAd,需要考虑三种情况:

  1. 我们还没有获取横幅,在这种情况下,如果广告被禁用,请不要费心获取。

  2. 横幅仍在请求中,我们正在等待获取它。摧毁成功方块中的旗帜。

  3. 横幅已经出现在屏幕上,在这种情况下,我们应该在广告被禁用时将其移除。

这是横幅的代码:

if (!g_bRemoveADS) { // case (1)
    [HZBannerAd placeBannerInView:self.view
                         position:HZBannerPositionBottom
                          options:options
                          success:^(HZBannerAd *banner) {
                              if (g_bRemoveADS) { // case (2)
                                  // Just discard the banner
                                  [banner removeFromSuperview];
                              } else {
                                  // Keep a reference to the current banner ad, so we can remove it from screen later if we want to disable ads.
                                  self.currentBannerAd = banner;
                              }
                              NSLog(@"Ad Shown!");

                          } failure:^(NSError *error) {
                              NSLog(@"Error = %@",error);
                          }];
}

我做了一个单独的disableAds方法来设置值NSUserDefaults并销毁当前的横幅(如果有的话)。

- (void)disableAds {
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"REMOVEADS"];
    [currentBannerAd removeFromSuperview]; // case (3)
}

当前的HZBannerAd界面有些复杂。我们正在开发一个更简单的界面,可以为您处理所有这些复杂性。

于 2015-09-24T21:55:53.037 回答