Usage
In-App Protection Shielder for Apple is a command-line tool. It requires:
- an iOS application to be shielded (
.ipaor.app), - the runtime SDK (
IAPShielderRuntime.xcframework).
Optionally:
- a configuration YAML file (without it, all features are enabled),
- a signing configuration YAML file.
The output of the Shielder is a shielded .ipa file. If the output file already exists, it is overwritten. The input application is not modified. The Shielder exits with a non-zero exit code when processing fails.
The Shielder modifies the application, so the original signature is no longer valid. The shielded application has to be signed, either by the Shielder or afterwards. See Signing.
Applications downloaded from the App Store are encrypted and cannot be shielded. Use the build exported from Xcode or your build system.
Running the Shielder
iap-shielder protect [OPTIONS] <input-application>
Adding --dry-run validates the configuration and prints the shielding plan without writing any output.
Example
iap-shielder protect \
--config config.yml \
--signing-config signing.yml \
--output App-shielded.ipa \
App.ipa
Shielding without signing, for signing afterwards:
iap-shielder protect \
--config config.yml \
--defer-signing \
--output App-shielded.ipa \
App.ipa
where:
App.ipa- input application,config.yml- configuration file, including the path to the runtime SDK, see Configuration,signing.yml- signing configuration file, see Signing,App-shielded.ipa- shielded output application. It must be different from the input file.
App Store Privacy Manifest
The runtime SDK contains its own privacy manifest (PrivacyInfo.xcprivacy), which is added to the shielded application together with the runtime SDK. Your application’s privacy manifest does not need any changes.
The runtime SDK does not track users and does not collect any data. It declares the following required reason APIs:
| API Category | Reason |
|---|---|
NSPrivacyAccessedAPICategorySystemBootTime |
35F9.1 |
NSPrivacyAccessedAPICategoryFileTimestamp |
C617.1 |