仅向受支持的国家/地区显示iOS iAd

时间:2012-10-02 05:12:05

标签: objective-c ios iad

苹果似乎只为极少数国家提供iAd服务。因此,当在非iAd支持的国家/地区使用应用时,我想停止发送iAd请求。那么最好的方法是什么?

我问的是这个问题,因为我最近通过iAd网络的消息部分收到了来自Apple的以下消息。

  

iAd Network最近在加拿大推出。广告现在正在   服务于美国,加拿大,英国,德国,意大利,西班牙的应用程序,   法国和日本App Store。请为广告配置您的应用   仅在这些国家/地区提供服务。

2 个答案:

答案 0 :(得分:8)

(我在StackOverflow中的第一篇文章!)

我也在努力解决这个问题。似乎没有一种完美的方式来做到这一点。我的方法是使用用户区域设置的国家/地区。 (见下文)

有任何改进建议吗?

// Indicate if the iAds framework is supported for this particular device
+ (bool) iAdsIsSupported
{
    // List of supported countries for iAds
    static NSSet* supportedCountries = nil;
    if (supportedCountries == nil)
    {
        supportedCountries = [[NSSet setWithObjects:
                           @"ES", // spain
                           @"US", // usa
                           @"UK", // united kingdom
                           @"CA", // canada
                           @"FR", // france
                           @"DE", // german
                           @"IT", // italy
                           @"JP", // japan
                           nil] retain];
    }

    // Check if the country is in the supported countries
    // http://stackoverflow.com/questions/3940615/find-current-country-from-iphone-device
    NSLocale* currentLocale = [NSLocale currentLocale];  // get the current locale.
    NSString* countryCode = [currentLocale objectForKey:NSLocaleCountryCode];

    return [supportedCountries containsObject:countryCode];
}

答案 1 :(得分:1)

iAd框架是一个黑盒子。它的用例在文档中定义,您打算按预期使用它或根本不使用它。

恕我直言,iAd没有最佳方式来做这件事,只有不好的方法。

你必须做类似的事情:

  1. 在您的应用中从当前支持的国家/地区开始,因为它们可以随时间变化。
  2. 确定用户可以随时间变化的位置。
  3. 上述两个选项都有不良副作用。

    1. 检查支持的iAd国家/地区的网络请求/解析将比iAd请求更多工作。
    2. 在您的应用中使用用户位置必须符合Apple's App Store Review Guidelines
    3. 你也可能犯规:

        

      4.4位置数据只能在与应用程序向用户提供的功能和服务直接相关或支持已批准的广告用途时使用