Appflow has suddenly stopped including the bluetooth usage description in the info.plist file of the resulting ipa.
My Cordova config.xml includes these lines:
<config-file overwrite = "true" parent = "NSBluetoothAlwaysUsageDescription" platform = "ios" target = "* - Info.plist">
<string> This app would like to access Bluetooth to use the remote control. </string>
</config-file>
<config-file overwrite = "true" parent = "NSBluetoothPeripheralUsageDescription" platform = "ios" target = "* - Info.plist">
<string> This app would like to access Bluetooth to use the remote control. </string>
</config-file>
Until 2 days ago my commits were built without problems, the resulting ipas include the strings in the info.plist however now, even building the commits prior to this Appflow bug, the resulting ipas have ignored the strings:
My ipa is rejected by Apple, since Apple requires a usage description for bluetooth. Apple Store Connect now says: ITMS-90683: Missing Purpose String in Info.plist
Any ideas how to solve this? Thank you
NOTE: unzipping the ipa and editing the info.plist to include the string is not a solution, the ipa will not be installed after modifying the info.plist
I tried support before using this forum, but the response was that my query is out of their reach and suggesting to upgrade to a higher plan or use this forum.
Although we understand your frustration this is outside of the level of support we can provide […] The level of support this requires is available through one of our Enterprise Support plans, which include consultation and advisory services. […] I recommend checking out the following resources: The Ionic Forum (extremely active Q&A forum, this is a great place to ask questions!)…
I think the problem is that Appflow has updated Xcode 11 and now Appflow is not working properly.
Attached screenshot comparing the 2 plist files created by Appflow for the same commit. You will see that one was created with the Xcode version 11A420a (2 days ago) and the other with the Xcode version 11E608c (1 day ago).
The new version of Xcode 11E608c as you can see ignores bluetooth usage description strings, therefore Apple rejects ipa.
If I choose to build with Xcode 10 on Appflow then the problem goes away, but Xcode 10 uses SDK 12.2 which is deprecated, Apple will only accept apps compiled with SDK 13.
What do you mean exactly? could you be more explicit please?
PS: I still think that the problem is Xcode 11E because it is the only thing that has changed from one build to another build, but maybe I am wrong. In any case if I can’t access Xcode 11A or the Ionic people take time to solve this problem, does anyone know of a way to modify the info.plist or some other temporary solution?
@edriven thanks for the answer but I hired the Appflow payment service because it allows me to build the app in the cloud, because I don’t have a Mac.
Anyone with a similar problem using Appflow?
Any ideas how to solve this problem?
Maybe the problem is not Xcode… in which case does someone suggest another cause?
<config-file overwrite="true" parent="NSBluetoothAlwaysUsageDescription" target="*-Info.plist">
<string>Esta aplicaciĂłn necesita acceso a tu sensor Bluetooth con propĂłsitos de control de acceso</string>
</config-file>
But is not in Info.plist file, i have to add it manually in XCode. It seems that file do not update when you do ionic build command.
In the second error, i have to update cordova-ios plugin, with all cordova plugins.
I am sure more and more users will be affected by this problem soon.
Appflow is sold as an alternative to which to migrate from Phonegap https://ionicframework.com/docs/appflow/cookbook/phonegap-build-migration, which will be obsolete this month, if Appflow does not allow to build with an Xcode 11A version there will be rain of complaints from July, date in which AppStore will permanently make Phonegap obsolete.
All those who use bluetooth will be affected by this problem and their apps will be rejected by the App Store Team.
The Appflow team should respond by providing a solution to this problem, for example by allowing you to choose the version of Xcode 11A to build your app.
If someone from the Appflow team reads this case please respond.
@MGA93 Could you please explain how you edit the .ipa built by Appflow in Xcode to prevent the App Store from rejecting the app? If I edit the info.plist file then the .ipa is no longer allowed to be installed, it is corrupt for iOS.
Oh sorry, I didn’t read that part (Appflow). I use ionic with Capacitor, and in the final part, I have to open Xcode and Android Studio for the Settings (for use sensors and permissions).
I am facing the same issue,
If i build my app with XCode 11, my usage descriptions (NSPhotoLibraryUsageDescription & NSCameraUsageDescription in my case) are empty while they are not if i build with XCode 10.
I my config file, i also add another key (GADApplicationIdentifier). This one is correctly added in the Info.plist
<config-file target="*-Info.plist" parent="GADApplicationIdentifier">
<string>blah</string>
</config-file>
<config-file parent="NSCameraUsageDescription" target="*-Info.plist" overwrite="true">
<string>We use the camera if you choose to take a picture for your profile</string>
</config-file>
<config-file parent="NSPhotoLibraryUsageDescription" target="*-Info.plist" overwrite="true">
<string>We use your photos if you choose to use a photo for your profile</string>
</config-file>
So this is as if the 2 values were erased or overwritten.
I found a solution for my case.
I was using the plugin cordova-plugin-camera version 2.4.1. I updated it with version 4.0.1 (latest) and now the description usage is not empty anymore…
@Beesop do you access yourself the bluetooth feature or is it one of your plugins? If a plugin, did you try using latest version?