iOS SDK installation with Swift Package Manager
This guide covers the installation of the Let’s Sign Core and WYSIWYS iOS SDKs, version 2026.1.2, from the SwissSign JFrog Swift Package Registry. This is the customer release supported with Xcode 27 and iOS 27. You can install either SDK independently or both in the same application.
Prerequisites
- Xcode 27, with its command line tools selected in Xcode → Settings → Locations → Command Line Tools.
- An iOS application with a deployment target of iOS 16.6 or newer.
- The customer-specific JFrog username and read-only token supplied by SwissSign.
- An SDK license for your application's Bundle Identifier, supplied separately from the download credentials.
The JFrog token authorizes package downloads. It does not replace the SDK license or the credentials used by your application to access signing services.
Available packages
| SDK | Registry package identifier | Xcode product | Swift module |
|---|---|---|---|
| Let’s Sign Core | swisssign.lets-sign-ios-core | SENSESmartContract | SENSESmartContract |
| WYSIWYS | swisssign.lets-sign-ios-wysiwys | SENSESmartContractWYSIWYS | WYSIWYS |
Use 2026.1.2 for each package in this guide. The two SDKs have separate package identities; adding one does not add the other.
Configure the registry
Open Terminal and run:
xcrun swift package-registry set --global --scope swisssign \
https://swisssign.jfrog.io/artifactory/api/swift/letssign-spmThe --global option configures the registry for all projects belonging to your macOS user. You can run this command from your home directory; no local Package.swift is required.
This setup is needed once for each macOS user who will resolve the packages.
Authenticate with your customer token
Replace YOUR_JFROG_USERNAME with the username supplied by SwissSign, then run:
xcrun swift package-registry login \
https://swisssign.jfrog.io/artifactory/api/swift/letssign-spm \
--username "YOUR_JFROG_USERNAME"At the password prompt, paste the supplied JFrog token. If SwissSign supplied a Reference Token, use that value, not the Token ID. The terminal does not display the characters as you paste them.
On macOS, SwiftPM stores the credentials in the Keychain. If Xcode later requests access to the swisssign.jfrog.io Keychain item, enter your macOS login Keychain password, not the JFrog token, and allow access.
Do not put the token in source files, Package.swift, the Xcode project, or version control. Entering it at the password prompt also keeps it out of the command itself and shell history.
Add the SDK in Xcode
For Core:
- Open your iOS application project in Xcode.
- Select File → Add Package Dependencies.
- Enter
swisssign.lets-sign-ios-corein Search or Enter Package URL and select the package from theswisssign.jfrog.ioregistry. - Set Dependency Rule to Exact Version and enter
2026.1.2. - Select your application project and click Add Package.
- Select the
SENSESmartContractproduct, assign it to your application target, and complete the addition.
For WYSIWYS, follow the same steps with swisssign.lets-sign-ios-wysiwys and select the SENSESmartContractWYSIWYS product.
If your application needs both SDKs, add both packages at 2026.1.2 and assign both products to the same application target. No local wrapper package is required for this Xcode integration.
SwiftPM downloads the SDK binaries and verifies their checksums automatically. The WYSIWYS package also provides its required Realm, PSPDFKit, and PSPDFKitUI binaries. Do not add separate copies of these frameworks alongside the versions supplied by the package.
For an existing application, remove the previous manual integration of the SDK you are replacing before adding its registry package. Do not link the same SDK through both a manually added framework and SwiftPM.
Configure the application target
Confirm that iOS Deployment Target is 16.6 or newer in the application's build settings.
In Build Settings → Other Linker Flags, preserve existing settings and $(inherited), and ensure that -lc++ is present for both Debug and Release. If it is already inherited, do not add it again. This links the C++ runtime used by the SDK binaries; it is not a profiling option.
For a target with no other linker flags, the value is:
$(inherited) -lc++Import and build
In Swift source files that use Core:
import SENSESmartContractIn Swift source files that use WYSIWYS:
import WYSIWYSIf a source file uses both SDKs, include both imports. The registry packages expose these modules directly; a bridging header is not required for these imports.
Select an iPhone simulator or a supported iOS device as the run destination, then choose Product → Build. Do not select My Mac for this iOS integration.
Configure and use the SDK
After installation, follow the SDK-specific instructions for licenses, endpoints, initialization, and application flows: