停止来自Heyzap SDK的所有广告,以便在应用内购买“删除广告”

时间:2015-09-24 21:28:51

标签: ios objective-c heyzap

我正在尝试使用Heyzap SDK在iOS上购买In App后停止所有广告。

我试过了:

-(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;

1 个答案:

答案 0 :(得分: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. 横幅已经在屏幕上,在这种情况下,我们应该在广告被停用时将其删除。

  4. 这是横幅代码:

    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界面有点复杂。我们正在开发一个更简单的界面,可以为您处理所有这些复杂性。