Files

44 lines
2.5 KiB
Markdown

---
layout: documentation
id: documentation
title: System Profiling
---
## System Profiling
Sparkle supports optionally sending anonymous information about the user's system when checking for updates. Developers can use this information to better decide what platforms and hardware to support.
### Collected data
* macOS version
* CPU type/subtype (see mach/machine.h for decoder information on this data)
* Mac model
* Number of CPUs/CPU cores,
* 32-bit vs. 64-bit
* CPU speed
* RAM size
* Application name (as indicated by CFBundleName)
* Application version (as indicated by CFBundleVersion)
* User's preferred language
* Anything else you'd like to send along via [-[SPUUpdaterDelegate feedParametersForUpdater:sendingSystemProfile:]](/documentation/api-reference/Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)feedParametersForUpdater:sendingSystemProfile:)
In Sparkle 2, the collected data that is sent can be further limited via [-[SPUUpdaterDelegate allowedSystemProfileKeysForUpdater:]](/documentation/api-reference/Protocols/SPUUpdaterDelegate.html#/c:objc(pl)SPUUpdaterDelegate(im)allowedSystemProfileKeysForUpdater:).
This information will be provided via GET, so if your feed URL is `https://example.org/app.xml`, the request will be made to `https://example.org/app.xml?cpusubtype=4&ncpu=2&appName=App.app&cpuFreqMHz=1830[...]`.
**Note:** In order to standardize the statistics across a userbase with varying update check intervals, Sparkle submits profiling information only once per week.
### Making use of system profiling information
First, you've got to tell Sparkle you want this data to be sent. You can do this by adding a `SUEnableSystemProfiling` key to your app's Info.plist and setting its value to YES.
Next, you've got to put something up server-side to collate and display the submitted information in a useful way (see the list below).
Finally, set the `SUFeedURL` to your server-side script (eg. `https://example.org/profileInfo.php`) instead of the appcast. The script in turn should be set to link to the appcast.
### Known Backends
* Tom Harrington's original PHP-based backend: [download it here](/files/php_sparkle_stats_server.zip)
* Full-featured backend for CakePHP: [on GitHub here](//github.com/balthisar/JDSparkle)
* Ruby on Rails app for collecting statistics and displaying graphs: [Sparkler](//github.com/mackuba/sparkler)
* Playful weekly user-profile visualizer in PHP. No DB required: [Sparkle-Posse](//habilis.net/sparkle-posse/)