iOS Question applicable purpose string

kilat kosasih

Member
Licensed User
Hi,
I have a problen when i use camera in apps.
The problem is not technical, but administration in apple.
When i submit apps to app store, and i get error message:

Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
We noticed that your app requests the user’s consent to access their camera but does not clarify the use of the camera in the applicable purpose string.
Next Steps
Please revise the relevant purpose string in your app’s Info.plist file to specify why the app is requesting access to the user's camera. You can modify your app's Info.plist file using the property list editor in Xcode.

In my apps already insert code:
#Region Project Attributes
:
#PlistExtra:<key>NSCameraUsageDescription</key><string>Read and recognize qr code image</string>
#PlistExtra:<key>NSCameraUsageDescription</key><string>Taking a photo</string>
:
#End Region

How can I fulfill the desires of Apple?

Thankyou
Regards, kilat kosasih
 

kilat kosasih

Member
Licensed User
Assuming that previously the PLIST file was missing the description, now you should upload the app again.
With that condition, after i recompile, i found info.plist in Archive.zip still like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.JakNet.iOS.GilgalTools</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>3.1.8</string>
<key>CFBundleVersion</key>
<string>3.1.8</string>
</dict>
</plist>

if i upload to Apple, will definitely be rejected
Must i reinstall B4i in my Windows machine?
 
Upvote 0

kilat kosasih

Member
Licensed User
We don't know what you are doing...

Only you can find out why it is sometimes there and sometimes not.
With this plist it will be rejected.
sorry, maybe there is a wrong perception, I repeat the explanation
The following is the contents of the B4iProject-Info.plist file (Objects \ src \ B4iProject)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleIdentifier</key>
<string>JakNet.iOS.GilgalTools</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Gilgal Tools</string>
<key>CFBundleDisplayName</key>
<string>Gilgal Tools</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>UIRequiresFullScreen</key>
<true/>

<key>CFBundleIconName</key>
<string>AppIcon</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleVersion</key>
<string>3.1.8</string>
<key>CFBundleShortVersionString</key>
<string>3.1.8</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>

</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>

</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>

</array>

<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>
<key>CFBundleURLTypes</key><array><dict><key>CFBundleURLSchemes</key><array><string>JakNet.iOS.GilgalTools</string></array></dict>
</array>

<key>NSCameraUsageDescription</key><string>Read and recognize qr code image</string>
<key>NSPhotoLibraryUsageDescription</key><string>Photo library view and selecttion</string>
<key>NSPhotoLibraryAddUsageDescription</key><string>Save photo in albums</string>
<key>UIViewControllerBasedStatusBarAppearance</key><false/>
</dict>
</plist>




and the following is the contents of the plist file that is inside the IPA (zip file)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleIdentifier</key>
<string>com.apple.xcode.dsym.JakNet.iOS.GilgalTools</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>dSYM</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleShortVersionString</key>
<string>3.1.8</string>
<key>CFBundleVersion</key>
<string>3.1.8</string>
</dict>
</plist>





Is this condition true, how should it be?
 
Upvote 0

kilat kosasih

Member
Licensed User
In rejection from Apple, he gave this screen capture. What makes it is a rejection, because the application does not mention the reason for using the device.
How can I make the reason for using the device (mentioned in the plistextra there?
 

Attachments

  • attachment-17773039721195428550Screenshot-0503-071744.png
    attachment-17773039721195428550Screenshot-0503-071744.png
    184.8 KB · Views: 74
Upvote 0

Semen Matusovskiy

Well-Known Member
Licensed User
IOS shows, what is written in NSCameraUsageDescription.
If you really used <key>NSCameraUsageDescription</key><string>Read and recognize qr code image</string> and see "Taking a photo" this means that you have some <key>NSCameraUsageDescription</key> (as I understand, further overwrites previous).

To extract and to look info.plist using Finder is easy. Rename ipa to zip, click it (this will extract payload folder with executable module inside). Right click executable module, select 'Show package content". This will extract many files including info.plist. Click info.plist (open in XCode)
A sequence of parameteres is not very comfortable, but you will be able to find NSCameraUsageDescription value.
 
Upvote 0

kilat kosasih

Member
Licensed User
IOS shows, what is written in NSCameraUsageDescription.
If you really used <key>NSCameraUsageDescription</key><string>Read and recognize qr code image</string> and see "Taking a photo" this means that you have some <key>NSCameraUsageDescription</key> (as I understand, further overwrites previous).

To extract and to look info.plist using Finder is easy. Rename ipa to zip, click it (this will extract payload folder with executable module inside). Right click executable module, select 'Show package content". This will extract many files including info.plist. Click info.plist (open in XCode)
A sequence of parameteres is not very comfortable, but you will be able to find NSCameraUsageDescription value.
thankyou, i will check
 
Upvote 0

kilat kosasih

Member
Licensed User
IOS shows, what is written in NSCameraUsageDescription.
If you really used <key>NSCameraUsageDescription</key><string>Read and recognize qr code image</string> and see "Taking a photo" this means that you have some <key>NSCameraUsageDescription</key> (as I understand, further overwrites previous).

To extract and to look info.plist using Finder is easy. Rename ipa to zip, click it (this will extract payload folder with executable module inside). Right click executable module, select 'Show package content". This will extract many files including info.plist. Click info.plist (open in XCode)
A sequence of parameteres is not very comfortable, but you will be able to find NSCameraUsageDescription value.
I try to switch the position of NSCameraUsageDescription to bottom, and finally success.
Thankyou for your inspiration.
 
Upvote 0
Top