Action required before updating your apps for iOS 10

15,254 views
Skip to first unread message

Eric Leichtenschlag (Mobile Ads SDK Team)

unread,
Sep 9, 2016, 6:46:12 PM9/9/16
to Google Mobile Ads SDK Developers

Hello iOS developers,


If you’ve attempted to update your apps for iOS 10 in iTunes connect right now, you’ll see the following errors:


This app attempts to access privacy-sensitive data without a usage description. The

app's Info.plist must contain an NSCalendarsUsageDescription key with a string value explaining to the user how the app uses this data.


This app attempts to access privacy-sensitive data without a usage description. The

app's Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string value explaining to the user how the app uses this data.


To work around these errors, please add the following keys and descriptions to your app’s Info.plist to be compliant with the App Store’s privacy policy:


usage_description.png


<key>NSCalendarsUsageDescription</key>

<string>Advertisement would like to create a calendar event.</string>

<key>NSPhotoLibraryUsageDescription</key>

<string>Advertisement would like to store a photo.</string>

<key>NSBluetoothPeripheralUsageDescription</key>

<string>Advertisement would like to use bluetooth.</string>


The photo library usage description is important too. It’s not currently flagged by iTunes Connect, but is used by the SDK for MRAID v2 creatives. If you don’t include it, your app will crash on iOS 10 devices if an MRAID ad uses photo library features.


We are also planning an SDK update early next week to remove the NSBluetoothPeripheralUsageDescription requirement. It will also guard against the MRAID photo library crash in the event that you forget to add NSPhotoLibraryUsageDescription to your Info.plist.


Thanks,

Eric


Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

Ran Flasterstein

unread,
Sep 12, 2016, 9:07:12 PM9/12/16
to Google Mobile Ads SDK Developers
Thank you for this. With these keys set, will it work like this?

 - Until an ad appears that requires one of these permissions, everything runs as normal
 - If an ad loads that utilizes calendar, photo library, or bluetooth, the app will pop up a notification for users to allow access before the ad loads
 - If users do not choose to allow access, that ad will not load.
 - A new ad will load if not allowed, or the 30/60 second refresh will occur to load next ad after one that failed to load

Is that the expected behavior with these keys set for iOS 10?
How frequent are ads that create calendar events, store photos, or use bluetooth?

Thanks!

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Sep 13, 2016, 11:03:41 AM9/13/16
to Google Mobile Ads SDK Developers
Hi Ran,

These are all dependent on the Ad itself. If the creative is requiring any of these permissions, then an alert view will popup for the user asking for that particular permission. So -

 - Until an ad appears that requires one of these permissions, everything runs as normal
 
This is correct. The SDK does not require these permissions to run its job. It's only the creatives that might depend on this.

 - If an ad loads that utilizes calendar, photo library, or bluetooth, the app will pop up a notification for users to allow access before the ad loads
 
This is also correct. The popup would be the default permission notification view shown by the iOS system.

 - If users do not choose to allow access, that ad will not load.
 
That is not the case. Usually these creatives are interactive in nature and if the permissions are denied, that bit of interaction would fail. But the creative itself would load up.

 - A new ad will load if not allowed, or the 30/60 second refresh will occur to load next ad after one that failed to load
 
As I have mentioned, loading of the ad is not dependent on whether the user has granted these permissions or not. If an ad fails to load, then the SDK would request another one depending on the refresh rate.

 Is that the expected behavior with these keys set for iOS 10?
 
These keys are now required to be declared in iOS 10 since they have changed their policies for this SDK. But note that even if you, as a pub, do not declare them, iOS would still popup these permissions to the user. The only difference would be that those popups would not have included the message being declared for these keys.

How frequent are ads that create calendar events, store photos, or use bluetooth?
 
Usually these are direct serves, meaning the pubs would be designing their own creatives and serving them in their apps. 

Thanks,
Arjun Busani
Mobile Ads SDK Team

Pranoy Chow

unread,
Sep 13, 2016, 4:59:07 PM9/13/16
to Google Mobile Ads SDK Developers
This seems to be missing "NSCameraUsageDescription" which mine was complaining about. I posted a question about that here:


This also applies to GoogleSignIn as that installs firebase with it automatically too.

-Pranoy


On Friday, September 9, 2016 at 6:46:12 PM UTC-4, Eric Leichtenschlag (Mobile Ads SDK Team) wrote:

Eric Leichtenschlag (Mobile Ads SDK Team)

unread,
Sep 15, 2016, 8:16:13 PM9/15/16
to Google Mobile Ads SDK Developers
Hi Pranoy,

Google Mobile Ads SDK 7.11.0 for iOS has bene released. With 7.11.0, you no longer need to include any usage descriptions. Please see this blog post for more information.

We did not see NSCameraUsageDescription pop up when testing with just the Google Mobile Ads SDK without Firebase. I can't speak to Firebase's status as of 2 days ago w.r.t. camera usage, but Firebase 3.6.0 did just get released which may have addressed this. If not, a good place to ask would be the Firebase group.

Thanks,
Eric

Christopher Pickslay

unread,
Sep 20, 2016, 9:36:54 AM9/20/16
to Google Mobile Ads SDK Developers
Thanks Eric. Does this mean we can also remove the CoreBlutooth and EventKit framework dependencies?

Jonathan Baker

unread,
Sep 20, 2016, 10:11:07 AM9/20/16
to Google Mobile Ads SDK Developers
Eric,

After updating the SDK, we're no longer getting notices about calendar and bluetooth, but are still getting them for photos.

You mention that we no longer need to include usage descriptions, but the blog post you linked to only speaks to calendar and bluetooth.

Any ideas?

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Sep 20, 2016, 10:33:43 AM9/20/16
to Google Mobile Ads SDK Developers
Hi guys,

@ Christopher
This is correct. Our SDK does not depend on CoreBluetooth and EventKit frameworks anymore. You can get the list of required frameworks from our specs as well.

@Jonathan
The SDK has removed the NSPhotoLibraryUsageDescription requirement as well. The blogpost does mention the mraid.storePicture() method being removed. Also note that this has not been flagged by iTune Connect as a requirement for iOS 10

Thanks,
Arjun Busani
Mobile Ads SDK Team

Jonathan Baker

unread,
Sep 20, 2016, 10:40:06 AM9/20/16
to Google Mobile Ads SDK Developers
Thanks Arjun,

Note, that it appears that iTC is in fact flagging for photo library usage, as we're still getting this rejection notice:

This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.

I wish there was a tool available to help finding out where these code paths exist... 

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Sep 20, 2016, 4:56:07 PM9/20/16
to Google Mobile Ads SDK Developers
Hi Jonathan,

Can you try again without SDK and let us know if iTunes Connect is throwing this error again?

Thanks,
Arjun Busani
Mobile Ads SDK Team

AlphaGTR

unread,
Sep 26, 2016, 1:50:18 PM9/26/16
to Google Mobile Ads SDK Developers
We are also still getting this iTunes error even with Admob 7.11: NSCameraUsageDescription 

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Sep 26, 2016, 2:26:49 PM9/26/16
to Google Mobile Ads SDK Developers
Hi there,

Can you confirm me that this is happening even without our SDK? Do not remove any Firebase frameworks but only our Mobile Ads SDK and see if this is happening.

Thanks,
Arjun Busani
Mobile Ads SDK Team

nestor alorro

unread,
Nov 29, 2016, 12:31:09 PM11/29/16
to Google Mobile Ads SDK Developers
Hi, My binary is still being rejected. I already using GoogleMobileAdsSdkiOS-7.15.0 and still no luck. I also added NSCalendarUsageDescription key on info.plist and it is still the same.

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Nov 29, 2016, 2:44:15 PM11/29/16
to Google Mobile Ads SDK Developers
Hi Nestor,

This dependency has been removed from our SDK and I would suggest you to remove our framework and check again.

Thanks,
Arjun Busani
Mobile Ads SDK Team

chao Lam

unread,
Nov 30, 2016, 1:10:10 PM11/30/16
to Google Mobile Ads SDK Developers
I'm running into a similar problem using Firebase. I uninstalled all my pods and re-submitted to app store and still have the same issues. This is what my Podfile.lock looks like:

  - Firebase/Auth (3.10.0):

    - Firebase/Core

    - FirebaseAuth (= 3.0.6)

  - Firebase/Core (3.10.0):

    - FirebaseAnalytics (= 3.6.0)

    - FirebaseCore (= 3.4.5)

  - Firebase/Crash (3.10.0):

    - Firebase/Core

    - FirebaseCrash (= 1.1.4)

  - Firebase/Database (3.10.0):

    - Firebase/Core

    - FirebaseDatabase (= 3.1.1)

  - Firebase/Messaging (3.10.0):

    - Firebase/Core

    - FirebaseMessaging (= 1.2.1)

  - FirebaseAnalytics (3.6.0):

    - FirebaseCore (~> 3.4)

    - FirebaseInstanceID (~> 1.0)

    - GoogleInterchangeUtilities (~> 1.2)

    - GoogleSymbolUtilities (~> 1.1)

    - GoogleToolboxForMac/NSData+zlib (~> 2.1)

  - FirebaseAuth (3.0.6):

    - FirebaseAnalytics (~> 3.4)

    - GoogleToolboxForMac/NSDictionary+URLArguments (~> 2.1)

    - GTMSessionFetcher/Core (~> 1.1)

  - FirebaseCore (3.4.5):

    - GoogleInterchangeUtilities (~> 1.2)

    - GoogleToolboxForMac/NSData+zlib (~> 2.1)

  - FirebaseCrash (1.1.4):

    - FirebaseAnalytics (~> 3.5)

    - FirebaseInstanceID (~> 1.0)

    - GoogleInterchangeUtilities (~> 1.2)

    - GoogleSymbolUtilities (~> 1.1)

    - GoogleToolboxForMac/Logger (~> 2.1)

    - GoogleToolboxForMac/NSData+zlib (~> 2.1)

  - FirebaseDatabase (3.1.1):

    - FirebaseAnalytics (~> 3.5)

  - FirebaseInstanceID (1.0.8)

  - FirebaseMessaging (1.2.1):

    - FirebaseAnalytics (~> 3.4)

    - FirebaseInstanceID (~> 1.0)

    - GoogleInterchangeUtilities (~> 1.2)

    - GoogleSymbolUtilities (~> 1.1)

    - GoogleToolboxForMac/Logger (~> 2.1)

  - GoogleInterchangeUtilities (1.2.2):

    - GoogleSymbolUtilities (~> 1.1)

  - GoogleSymbolUtilities (1.1.2)

  - GoogleToolboxForMac/DebugUtils (2.1.0):

    - GoogleToolboxForMac/Defines (= 2.1.0)

  - GoogleToolboxForMac/Defines (2.1.0)

  - GoogleToolboxForMac/Logger (2.1.0):

    - GoogleToolboxForMac/Defines (= 2.1.0)

  - GoogleToolboxForMac/NSData+zlib (2.1.0):

    - GoogleToolboxForMac/Defines (= 2.1.0)

  - GoogleToolboxForMac/NSDictionary+URLArguments (2.1.0):

    - GoogleToolboxForMac/DebugUtils (= 2.1.0)

    - GoogleToolboxForMac/Defines (= 2.1.0)

    - GoogleToolboxForMac/NSString+URLArguments (= 2.1.0)

  - GoogleToolboxForMac/NSString+URLArguments (2.1.0)

  - GTMSessionFetcher/Core (1.1.7)

 

Thanks,

chao

Veer Arjun Busani(Mobile Ads SDK Team)

unread,
Nov 30, 2016, 2:41:33 PM11/30/16
to Google Mobile Ads SDK Developers
Hi Chao,

It looks like the Calendar dependency might be coming from the Firebase SDK and not from our Mobile Ads framework, in which case, I would suggest you to contact Firebase support about this.

Thanks,
Arjun Busani
Mobile Ads SDK Team

Reply all
Reply to author
Forward
0 new messages