iOS Question ITMS-91053: Missing API declaration

Alex_197

Well-Known Member
Licensed User
Longtime User
Hi all.

Today I uploaded my app and received this email. It looks like this isi something new.
My app is using a document picker.

App Store Connect
Hello,
We noticed one or more issues with a recent submission for App Store review for the following app:​
  • HCMS-EVV
  • Version 2.0.36
  • Build 2.0.36

Although submission for App Store review was successful, you may want to correct the following issues in your next submission for App Store review. Once you've corrected the issues, upload a new binary to App Store Connect.
ITMS-91053: Missing API declaration - Your app’s code in the “HCMS-EVV” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryFileTimestamp. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documen...t_files/describing_use_of_required_reason_api.
Apple Developer Relations​
 
Last edited:

Alex_197

Well-Known Member
Licensed User
Longtime User
I put the privacy manifest from post 19 created by Erel into Files\Special (see the attached screenshot) with the file name PrivacyInfo.xcprivacy.txt and submitted my app again.

I received the same email - what I did wrong?

App Store Connect

Hello,

We noticed one or more issues with a recent submission for App Store review for the following app:

HCMS-EVV
Version 2.0.37
Build 2.0.37
Although submission for App Store review was successful, you may want to correct the following issues in your next submission for App Store review. Once you've corrected the issues, upload a new binary to App Store Connect.

ITMS-91053: Missing API declaration - Your app’s code in the “HCMS-EVV” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryFileTimestamp. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documen...t_files/describing_use_of_required_reason_api.

Apple Developer Relations
 

Attachments

  • Special.png
    Special.png
    12.4 KB · Views: 31
Upvote 0

Alessandro71

Well-Known Member
Licensed User
Longtime User
I also received the same email with a reference to NSPrivacyAccessedAPICategorySystemBootTime but I'm explicitly reading boot time in my app.
Is it something the B4i runtime does on its own?
 
Upvote 0

Alessandro71

Well-Known Member
Licensed User
Longtime User
I put the privacy manifest from post 19 created by Erel into Files\Special (see the attached screenshot) with the file name PrivacyInfo.xcprivacy.txt and submitted my app again.

I received the same email - what I did wrong?
remove the .txt extension from filename
 
Upvote 0

marcick

Well-Known Member
Licensed User
Longtime User
Can I have a sample file with 2 or 3 declarations ? Not sure how to compose the file (header body etc). Thanks
 
Upvote 0

Alessandro71

Well-Known Member
Licensed User
Longtime User
this is the file I used
I have received no email after submitting it

XML:
<?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">
<!--
   PrivacyInfo.xcprivacy
-->
<plist version="1.0">
<dict>
 <key>NSPrivacyAccessedAPITypes</key>
 <array>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>C617.1</string>
   </array>
  </dict>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>7D9E.1</string>
   </array>
  </dict>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>CA92.1</string>
   </array>
  </dict>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategorySystemBootTime</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>35F9.1</string>
   </array>
  </dict>
 </array>
</dict>
</plist>
 
Upvote 0

marcick

Well-Known Member
Licensed User
Longtime User
But still I have to understand where UserDefaults and BootTime are used in my app…
Are you really interested about it? World is going in the direction of crazyness. Does Apple or Google want I write a fucking text somewhere ? Here it is. “Privacy” is a noble concept, but world is not able to create rules that make some sense.
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
1. The libraries don't do anything by themselves and of course that there is no attempt to "fingerprint" the device.
2. The problem is that the libraries provide APIs that in some edge cases can be used for fingerprinting. This is the same case as with many other frameworks used to develop iOS apps.

For now you don't need to do anything. I will create a tutorial about it.
 
Upvote 0

Erel

B4X founder
Staff member
Licensed User
Longtime User
In order to test this, I've uploaded an update to one of my apps.

This apps uses these libraries:

1711608477451.png


I was a bit surprised that the only "warning" I received by email is the one about the missing push notification entitlement.

So the question to the developers who received this warning, do you know which API caused it? Which library?
 
Upvote 0

Filippo

Expert
Licensed User
Longtime User
This is a list of 4 apps:

NSPrivacyAccessedAPICategoryUserDefaults
NSPrivacyAccessedAPICategoryFileTimestamp
NSPrivacyAccessedAPICategoryDiskSpace
1711609866952.png


NSPrivacyAccessedAPICategoryUserDefaults
NSPrivacyAccessedAPICategoryFileTimestamp
NSPrivacyAccessedAPICategoryDiskSpace
1711609927096.png



NSPrivacyAccessedAPICategoryUserDefaults
NSPrivacyAccessedAPICategoryFileTimestamp
NSPrivacyAccessedAPICategoryDiskSpace
NSPrivacyAccessedAPICategorySystemBootTime
1711609951142.png



NSPrivacyAccessedAPICategoryUserDefaults
NSPrivacyAccessedAPICategoryFileTimestamp
NSPrivacyAccessedAPICategoryDiskSpace
1711609999684.png
 
Upvote 0

Alessandro71

Well-Known Member
Licensed User
Longtime User
NSPrivacyAccessedAPICategoryUserDefaults
NSPrivacyAccessedAPICategoryFileTimestamp
NSPrivacyAccessedAPICategoryDiskSpace
NSPrivacyAccessedAPICategorySystemBootTime
1711610501124.png
 
Upvote 0

angel_

Well-Known Member
Licensed User
Longtime User
NSPrivacyAccessedAPICategoryFileTimestamp
NSPrivacyAccessedAPICategoryDiskSpace
NSPrivacyAccessedAPICategoryUserDefaults

1711612414665.png
 
Upvote 0

Alex_197

Well-Known Member
Licensed User
Longtime User
My privacy manifest - I'm using DocumentPicker
B4X:
<?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>NSPrivacyAccessedAPITypes</key>
 <array>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>3B52.1</string>
   </array>
  </dict>
 </array>
</dict>
</plist>
 

Attachments

  • Libs.png
    Libs.png
    20.8 KB · Views: 17
Upvote 0

Filippo

Expert
Licensed User
Longtime User
Did the warning disappear after you added it?
I uploaded a test with the file "PrivacyInfo.xcprivacy" today and everything seems to be OK.
I only got the standard info from Apple.

PrivacyInfo.xcprivacy:
B4X:
<?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">
<!--
   PrivacyInfo.xcprivacy
-->
<plist version="1.0">
<dict>
 <key>NSPrivacyAccessedAPITypes</key>
 <array>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>C617.1</string>
   </array>
  </dict>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>7D9E.1</string>
   </array>
  </dict>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>CA92.1</string>
   </array>
  </dict>
  <dict>
   <key>NSPrivacyAccessedAPIType</key>
   <string>NSPrivacyAccessedAPICategorySystemBootTime</string>
   <key>NSPrivacyAccessedAPITypeReasons</key>
   <array>
    <string>35F9.1</string>
   </array>
  </dict>
 </array>
</dict>
</plist>

E-Mail:

App Store Connect
Hello,

We noticed one or more issues with a recent delivery for the following app:

  • Master-Of-Regularity
  • Version 5.31.1
  • Build 5.31.1

Although delivery was successful, you may want to correct the following issues in your next delivery. Once you've corrected the issues, upload a new binary to App Store Connect.

ITMS-90078: Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature's entitlements do not include the 'aps-environment' entitlement. If your app uses the Apple Push Notification service, make sure your App ID is enabled for Push Notification in the Provisioning Portal, and resubmit after signing your app with a Distribution provisioning profile that includes the 'aps-environment' entitlement. Xcode does not automatically copy the aps-environment entitlement from provisioning profiles at build time. This behavior is intentional. To use this entitlement, either enable Push Notifications in the project editor's Capabilities pane, or manually add the entitlement to your entitlements file. For more information, see https://developer.apple.com/library...s.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.

Apple Developer Relations​
 
Upvote 0
Top