Enable Logging
Turn on debug logging to see SpendOwl activity:
SpendOwl.enableLogging = true
Disable logging in production builds. Logs may contain sensitive information.
Using Build Flags
Enable logging only in debug builds:
#if DEBUG
SpendOwl.enableLogging = true
#endif
Log Levels
For more control, use logLevel:
SpendOwl.logLevel = .debug
| Level | Description |
|---|
.none | No logging (default) |
.error | Only errors |
.info | Errors and important events |
.debug | All messages including debug info |
Example Output
[SpendOwl] SpendOwl SDK v1.0.0 configured
[SpendOwl] Fetching attribution token...
[SpendOwl] Attribution token received: eyJ0...
[SpendOwl] Sending attribution to server...
[SpendOwl] Attribution result: attributed (Campaign: Winter Sale)
[SpendOwl] Purchase tracking started
[SpendOwl] User ID set: user-123...
[SpendOwl] Purchase tracked: com.app.premium ($9.99 USD)
Console.app Integration
SpendOwl logs are written to the system log using os_log. To view them:
Open Console.app
Find Console in /Applications/Utilities/Console.app
Select Your Device
Choose your device or simulator from the sidebar
Filter by SpendOwl
In the search bar, type SpendOwl to filter logs
Console.app shows logs even when Xcode isn’t running—useful for testing on physical devices.
Common Issues
Error: SpendOwl SDK is not configured
Solution: Call configure() before using other SDK methods:
// In App.init() or AppDelegate
SpendOwl.configure(apiKey: "your-api-key")
Invalid API Key
Solution: Check your API key in the dashboard. Ensure you’re using the correct key for your environment (test vs. live).
Network Errors
Error: Network error: The request timed out
Solutions:
- Check internet connectivity
- Increase timeout:
SpendOwlConfiguration(apiKey: "...", timeoutInterval: 30)
- The SDK retries automatically, but persistent failures indicate network issues
Attribution Unavailable
Error: Attribution is not available on this device
Causes:
- iOS version below 14.3
- AdServices framework not available
- Running in simulator (attribution may return mock data)
Solution: Attribution works on iOS 14.3+ on real devices. Simulators may return limited data.
Attribution Denied
Error: Attribution access was denied
Causes:
- User or MDM restricted ad tracking
- Limited Ad Tracking enabled in Settings
Solution: This is normal for some users. Handle gracefully:
do {
let attribution = try await SpendOwl.attribution()
} catch SpendOwlError.attributionDenied {
// User has restricted tracking - continue without attribution
}
Verifying Integration
Use this checklist to verify SpendOwl is working:
Check Configuration
print(SpendOwl.isConfigured) // Should be true
Check SDK Version
print(SpendOwl.sdkVersion) // Should print "1.0.0"
Enable Logging
SpendOwl.enableLogging = true
Trigger Attribution
let attribution = try await SpendOwl.attribution()
print(attribution.status) // Should print a status
Debug Mode in Dashboard
The SpendOwl dashboard shows debug data when using a test API key:
- Test events are labeled separately
- Don’t affect production ROAS
- Useful for verifying integration
Reporting Issues
If you encounter issues not covered here:
- Enable
.debug logging
- Reproduce the issue
- Copy the logs
- Open an issue on GitHub
Include:
- iOS version
- SDK version
- Relevant logs
- Steps to reproduce
Next Steps