• Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

iOS iOS info.plist warning

matharoo

manualman
GameMaker Dev.
App Store Connect has sent me these warnings for my app:
ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSBluetoothAlwaysUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data are required to include a purpose string. If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
How can I fix these with GameMaker?

Solution for the Info.plist issue:

I created an empty extension, and in the iOS window (under "Extra Platforms"), I added the key into the "Inject to Info.plist" field:

 
Last edited:

SIG.

Member
I haven't yet done this because I'm waiting for full release before updating my app, but I believe you will need to (1) go into GMS2's File > Preferences > iOS and check "Suppress build and run", then (2) add the NSBluetoothAlwaysUsageDescription key to your project's [projectname]-info.plist in Xcode before building from Xcode.

You'll find the plist keys by clicking around your project in Xcode, but if you can't find it, check these docs:
I'm not at my mac or I'd provide step-by-step instructions. If you still have trouble, post again, and I'll take a closer look.

Edit: You should also submit a bug report to YYG to encourage them to figure out what's asking for bluetooth and to add functionality to GMS2 either to suppress that request (if possible) or at least to build usage descriptions into the IDE.
 

matharoo

manualman
GameMaker Dev.
I haven't yet done this because I'm waiting for full release before updating my app, but I believe you will need to (1) go into GMS2's File > Preferences > iOS and check "Suppress build and run", then (2) add the NSBluetoothAlwaysUsageDescription key to your project's [projectname]-info.plist in Xcode before building from Xcode.

You'll find the plist keys by clicking around your project in Xcode, but if you can't find it, check these docs:
I'm not at my mac or I'd provide step-by-step instructions. If you still have trouble, post again, and I'll take a closer look.

Edit: You should also submit a bug report to YYG to encourage them to figure out what's asking for bluetooth and to add functionality to GMS2 either to suppress that request (if possible) or at least to build usage descriptions into the IDE.
Thanks!
 

matharoo

manualman
GameMaker Dev.
Instead of having to add the key to explain why the app uses Bluetooth (which it doesn't require), is there no way to disable Bluetooth for the app? My app doesn't use it, but it does use TCP networking. Could that be it?

Or maybe this is something that YYG needs to fix... I have no idea.

Edit: Well, it seems like the Info.plist file resets on each build. So editing that file itself isn't a solution, unless I want to edit it for each build... which I don't.
 
Last edited:

SIG.

Member
@matharoo I added the key (NSBluetoothAlwaysUsageDescription) and string value (explanation) to both my [app]-info.plist and info.plist, and I still got the warning. Either I did something wrong or there's a bug with Apple here (doubtful, since this has been in place for a while). Please let me know if you resolve it, even with a single build.

I don't believe there's a way to bluntly suppress asking for bluetooth permission. Are you using an extension for Google Ads / AdMob? I theorize that this is the functionality calling for bluetooth permission, but I'm not sure. If you are not using ads, that knowledge would be helpful to narrow this down.

And, as I said, please submit a bug report so YYG recognizes this as an issue.
 

matharoo

manualman
GameMaker Dev.
Please let me know if you resolve it, even with a single build.
Okay, I'll let you know the next time I try.

Are you using an extension for Google Ads / AdMob? I theorize that this is the functionality calling for bluetooth permission, but I'm not sure. If you are not using ads, that knowledge would be helpful to narrow this down.
Nope, but I am using Google Analytics, if that matters. I also have the Google IAP and Google Licensing extensions (they're added by default with the GPS extension, I don't even use them). Maybe I could try removing them...

And, as I said, please submit a bug report so YYG recognizes this as an issue.
Right
 

matharoo

manualman
GameMaker Dev.
@matharoo I added the key (NSBluetoothAlwaysUsageDescription) and string value (explanation) to both my [app]-info.plist and info.plist, and I still got the warning. Either I did something wrong or there's a bug with Apple here (doubtful, since this has been in place for a while). Please let me know if you resolve it, even with a single build.

I don't believe there's a way to bluntly suppress asking for bluetooth permission. Are you using an extension for Google Ads / AdMob? I theorize that this is the functionality calling for bluetooth permission, but I'm not sure. If you are not using ads, that knowledge would be helpful to narrow this down.

And, as I said, please submit a bug report so YYG recognizes this as an issue.
Now I wasn't even able to upload any builds because of the NSBluetooth error. So I went into Info.plist (and [app]-Info.plist) and added NSBluetoothAlwaysUsageDescription, along with NSBluetoothPeripheralUsageDescription (it showed up in the drop-down list). Now I can upload my builds.

Since I added both of these keys in my only test, I'm not sure which one did it. But since you said that adding NSBluetoothAlwaysUsageDescription did not work you, I suggest you try out NSBluetoothPeripheralUsageDescription.
 

SIG.

Member
NSBluetoothAlwaysUsageDescription did work for me. I'm not sure what I did wrong previously, but this time two different things were different: First, I added the key/value to both info.plist and [app-name]-info.plist. Second, when I added that key this time, the key name automatically turned into a plain-English description, "Privacy - somethingorother." Before, it didn't, it just stayed "NSBluetoothAlwaysUsageDescription." Maybe I had an extra space or something.
 

matharoo

manualman
GameMaker Dev.
NSBluetoothAlwaysUsageDescription did work for me. I'm not sure what I did wrong previously, but this time two different things were different: First, I added the key/value to both info.plist and [app-name]-info.plist. Second, when I added that key this time, the key name automatically turned into a plain-English description, "Privacy - somethingorother." Before, it didn't, it just stayed "NSBluetoothAlwaysUsageDescription." Maybe I had an extra space or something.
You probably had "Show Raw Keys/Values" disabled. You can toggle that through the right-click menu in a plist file. So, that doesn't really change anything, except for how the key names are displayed in Xcode.

Edit: Do you also get this error?

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
 

SIG.

Member
Edit: Do you also get this error?

ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.
Yes, I posted about it here. There were two other threads as well. I submitted a bug report to YYG with what I could find through my own research, but YYG does not seem to have created a bug for it.

Please submit a bug report so YYG recognizes it as a priority.
 

matharoo

manualman
GameMaker Dev.
@SIG. Hey, I was able to fix the Info.plist issue by using extensions.

So I created an empty extension, and in the iOS window (under "Extra Platforms"), I added the key into the "Inject to Info.plist" field:

upload_2019-11-3_11-0-35.png

Seems to work. I don't get the Info.plist warning anymore.

But I still do get the UIWebView warning, so this thread is not yet completely solved...
 
Top