Skip to content


Support for MacOS X Desktop application #68

wants to merge 154 commits into from

As I need MixPanel capabilities in a Desktop application, I did modify the iOS code to be able to compile and execute under MacOSX. The first test are positive but review is certainly needed to explore all MixPanel features. Following points have to be noted

  • distinctID is the serial number of the desktop machine and is taken using IOKit method
  • depending if the application is sandboxed or not the archive location may differ
  • All UIApplication related notifications have been "transferred" to their NSApplication couterparts
  • Currently the code considers background handling, but it may be more suited to not stop the flush while in the background. This part may need more work This is a first version of this support. As code changes start to be "big" , I am asking for a pull request and ad a review process before going further, in order to get feedback as soon as possible in the process. thanks
JLinden and others added some commits
@JLinden JLinden Minor bug fix 3bc8df8
@carlsverre carlsverre Fixed invalid requests not getting cleared from queue adb6a09
@carlsverre carlsverre Merge remote branch 'hbloon/master'
@carlsverre carlsverre Whitespace fixes 379d98e
Tim Remove all references to old-style funnels. 97eeac2
@elfredpagan elfredpagan Stop using the deprecated uniqueIdentifier to identify users
Changed the user identifier to be a combination of the devices mac addresses and the bundle id.
@elfredpagan elfredpagan fix for issue #6
Removed the last 4 array components from the sha1 call.
@elfredpagan elfredpagan remove funnel based methods, cleanup whitespace
Removed funnel tracking methods and all related objects, enums. Cleaned up whitespace inconsistencies.
@elfredpagan elfredpagan Updated Docs.
Removed all references of event types.
@elfredpagan elfredpagan add name_tag support
Added a nameTag property to the MixpanelAPI object
@elfredpagan elfredpagan namespace base64 category
Add a namespace to the base65 category to avoid clashing with client code.
@elfredpagan elfredpagan Namespace TouchJSON
Namespaced TouchJSON to avoid conflicts with client code. Removed unused TouchJSON files to avoid bloat
@elfredpagan elfredpagan update API docs 3df00ea
@elfredpagan elfredpagan Resolve some foregrounding issues.
If you enter and exit the foreground quickly, it was possible for the mixpanel background tasks to clobber eachother. This has been resolved.
Peter Skirko Handle when bundle name missing in .plist bd8bffb
Peter Skirko Used spaces instead of tabs 71c6cb9
@elfredpagan elfredpagan Add support for multiple MixpanelAPI instances.
Removed the singleton constrains from the MixpanelAPI class. Now the library supports a singleton instance and multiple non singleton instances.
@elfredpagan elfredpagan updated documentation 3a7d943
@elfredpagan elfredpagan serialize data on network error 7667d4a
@elfredpagan elfredpagan update the tutorial b8ccf58
@elfredpagan elfredpagan Added new features
1. Users can set the API URL now.
2. Added a delegate to the MixpanelAPI Object. Now
users can be notified and block the API from 
sending events to the server. 
3. Added a flag to automatically send the device 
4. Changed the default URL to use https.
raylu fix super properties link bd4df76
@ttrefren ttrefren Update readme to reflect default identifier value d7cbffe
@elfredpagan elfredpagan remove analyzer warnings 728c651
@elfredpagan elfredpagan properly urlencode base64 data 98aef67
@erikchen erikchen Fix two bugs.
1. The expiration handler for beginBackgroundTask was cancelling the connection, but not setting self.connection = nil, which would prevent all future connections from going out.
2. Remove an extraneous attempt to start a NSURLConnection. [NSURLConnection connectionWithRequest:delegate:] creates a connection that is started immediately, and the documentation is unclear as to whether start is an idempotent method.
@elfredpagan elfredpagan Merge pull request #19 from erikchen/bug_fixes
Fix two bugs.
@elfredpagan elfredpagan guard against nil name tag
Remove the name tag if a user passes in nil.
Kasra Kyanzadeh Initial people integration d795aa7
Kasra Kyanzadeh Indentation fixes, people integration, tests c864e99
Kasra Kyanzadeh identifyUser uses register instead of registerOnce, flush unit test fa950c4
Kasra Kyanzadeh Added license c3c1953
Kasra Kyanzadeh Readme docs e71425a
Kasra Kyanzadeh Removed test code 6ef3491
@kasrak kasrak Doc typo 48d6b5f
@kasrak kasrak setSendDeviceModel defaults to YES 7e92c79
@kasrak kasrak Documentation typo 2663cad
@kasrak kasrak New docs exported 71978be
@kasrak kasrak Protocols docs e92d97b
@kasrak kasrak Updated tutorial for people 504f5e7
@kasrak kasrak Added release notes to readme 378890b
@ttrefren ttrefren Merge pull request #1 from ttrefren/en-people
En people
@ttrefren ttrefren Merge pull request #24 from ttrefren/master
Kasra Kyanzadeh Docs typo c4b2a69
@kasrak kasrak setProperties bug fix f846162
@kasrak kasrak Updated readme 8a99b9c
Kasra Kyanzadeh Added unit test for multiple set bug (fixed) 29790ec
Kasra Kyanzadeh Renamed all People methods to add User prefix b09215a
Kasra Kyanzadeh Updated docs for new People method names 8656f67
@kasrak kasrak Added push notification registration df4a786
@kasrak kasrak Renamed method 9614d3d
@kasrak kasrak Send device model, os version, app version cc27b28
@jparise jparise Initialize outputLength to zero.
This fixes a static analyzer warning in Xcode 4.4.
@kasrak kasrak Merge pull request #29 from jparise/base64-warning
Initialize outputLength to zero.
@kasrak kasrak Catch exception if unarchiving data fails 6d36828
@kasrak kasrak v1.2.1 readme a37da89
@kasrak kasrak Merge branch 'master' of 4becb31
@kasrak kasrak Use union for sending iOS device ids 414cab8
@kasrak kasrak Added handlePush: method d8d8888
@kasrak kasrak Merge branch 'en-push'
@kasrak kasrak Update docs for setSendDeviceModel: 8859389
@kasrak kasrak $ios prefix for device info, send device info when registering for push b1726b0
@kasrak kasrak only flush in background when there is something to send 14e9fb7
@kasrak kasrak push registration unit test cae6e6c
@kasrak kasrak make push test more rigid f85d9f2
@kasrak kasrak clean up push test 5454782
@kasrak kasrak New generated docs 5bb2a5f
@kasrak kasrak v1.3 readme b7f3f1c
@kasrak kasrak Clean up serializer code, handle NSURLs and NaN NSNumbers, as well as…
… unknown objects in sets
@kasrak kasrak v1.3.1 readme: better handling of non-standard datatypes 82b7e61
@neilrahilly neilrahilly redesign c7f4c78
@neilrahilly neilrahilly new readme and images da9546c
@neilrahilly neilrahilly fix readme image links 905c316
@neilrahilly neilrahilly remove stray nslog a9fbed4
@neilrahilly neilrahilly updates to readme d3e4913
@neilrahilly neilrahilly fix up links in readme markdown 9e128a2
@neilrahilly neilrahilly docs 2151b2e
@neilrahilly neilrahilly small readme change 0739e01
@neilrahilly neilrahilly set sdk back to 5.1 2bc186d
@neilrahilly neilrahilly update sharedAPI to sharedInstance in comments 6e71971
@neilrahilly neilrahilly fix token comment a78e6c4
@neilrahilly neilrahilly headerdoc update 13d3594
@neilrahilly neilrahilly fix readme immage links 8bf2c26
@neilrahilly neilrahilly fix property type assertions. add network indicator toggle 4c9cbb0
@neilrahilly neilrahilly update headerdoc 78eb433
@neilrahilly neilrahilly remove debug flush logging 8a1d79c
@neilrahilly neilrahilly avoid raising exceptions 347f788
@neilrahilly neilrahilly typo daf5d8b
@neilrahilly neilrahilly don't redefine DebugLog eec5788
@neilrahilly neilrahilly fix ifdefs for DebugLog 22c7fce
@neilrahilly neilrahilly target latest ios 7cb548e
@neilrahilly neilrahilly make flush on background optional 13c6a18
@neilrahilly neilrahilly cleanup whitespace 32eeddc
@neilrahilly neilrahilly synchronized 132441a
@neilrahilly neilrahilly lower deployment target 8e97f57
@neilrahilly neilrahilly fix background issues 38e643a
@neilrahilly neilrahilly ib xml c249b31
@neilrahilly neilrahilly expose archive a57d822
@neilrahilly neilrahilly session timing example 3d4202e
@neilrahilly neilrahilly better bg task management a1a5611
@neilrahilly neilrahilly docs 16eccc1
@neilrahilly neilrahilly app store provisioning b38c7a6
@neilrahilly neilrahilly fix broken connection issue cc9884e
@neilrahilly neilrahilly logging changes 38bfc0f
@neilrahilly neilrahilly fix threading bug (closes #36) d33b5fe
@neilrahilly neilrahilly add required imports 4881836
@neilrahilly neilrahilly new device properties b4debc4
@neilrahilly neilrahilly readme update 58bdf92
@neilrahilly neilrahilly readme formatting 8bfe05f
@neilrahilly neilrahilly fix tests 0aac72d
@neilrahilly neilrahilly allow reserved property override 93a379e
@neilrahilly neilrahilly increase synchronization
closes #39
@neilrahilly neilrahilly namespace logging
closes #40
@neilrahilly neilrahilly xib ae53f33
@neilrahilly neilrahilly make json serialization more reliable 5309503
@neilrahilly neilrahilly add log and debug macros back 0cf9f70
@neilrahilly neilrahilly add note about logging to readme e944821
@neilrahilly neilrahilly minor docs update 9eb6d90
@neilrahilly neilrahilly log will enter foreground a981081
@neilrahilly neilrahilly fix unused variable error in release
closes #41
@neilrahilly neilrahilly remember to bump version 60420ac
@neilrahilly neilrahilly small build config change 246990a
@neilrahilly neilrahilly revenue analytics methods aed0f5d
@neilrahilly neilrahilly add timestamps to people records 9b326fc
@andrewschaaf andrewschaaf fix a whitespace typo ff81e80
@neilrahilly neilrahilly provisioning profiles 3f02d24
@neilrahilly neilrahilly xib b1c2331
Marko Nikolovski Changed `id` return type to `instancetype` c43b58f
Ashkan Farhadtouski Prevent a potential crash.
- It appears that allocating and autoreleasing a CTTelephonyNetworkInfo from a class method causes a dereferencing exception, which causes a crash. This only happens on devices with an active and valid data service (only tested on iPhones but it might also affect iPads with cell data network access) by turning off Airplane mode and turning it back on and switching quickly to the app.
@idpaterson idpaterson Added methods to remove super properties that have been previously re…
…gistered, for use as an alternative to clearing all of the super properties just to change a subset of them.
@idpaterson idpaterson Ensure that a background task is started whenever -flush is called wh…
…ile the app is in the background. This ensures that the app can flush events within its own background tasks while maintaining the behavior of -flushOnBackground automatic flushes.
@neilrahilly neilrahilly setOnce c1a56b1
@neilrahilly neilrahilly IDFA property f9e5e1e
@neilrahilly neilrahilly use IDFA as default distinct id 45c4d3d
@neilrahilly neilrahilly use ODIN1 as fallback default distinct id babbb24
@neilrahilly neilrahilly unified identify: 6194f18
@neilrahilly neilrahilly add ODIN as a lib 2eae5e2
@neilrahilly neilrahilly add $app_short_version_string 6e2042b
@neilrahilly neilrahilly Merge pull request #57 from Newstex/pull-requests/delayed-background-…

Regression: -flush will not complete upload if called while app is in the background
@neilrahilly neilrahilly Merge pull request #54 from RebelVox/master
Rare Crash in the `deviceInfoProperties` Method
@neilrahilly neilrahilly Merge pull request #56 from Newstex/pull-requests/unregister-super-pr…

Added ability to remove previously registered super properties
@neilrahilly neilrahilly Merge pull request #53 from markonikolovski/instancetype
Changed `id` return type to `instancetype`
@neilrahilly neilrahilly Merge pull request #48 from andrewschaaf/fix-whitespace-typo
Fix a whitespace typo
@neilrahilly neilrahilly Merge branch 'master' of
@neilrahilly neilrahilly make unregisterSuperProperty: the same as other libs and tests 448a232
@neilrahilly neilrahilly fix up tests e4641e0
@neilrahilly neilrahilly bump version number dac6251
@neilrahilly neilrahilly add CHANGES 774e39e
@neilrahilly neilrahilly ad support framework is now necessary to get IFA 88f09fb
@neilrahilly neilrahilly readme fix 7cb0850
@lcerveau lcerveau Support MacOS X Desktop
Compilation step
@lcerveau lcerveau Handling of background, getting serial number, furst test 758644d
@lcerveau lcerveau Adding Desktop sample code 005b08a
@lcerveau lcerveau Made the test run on desktop 64527c1

This may be a tough integration at this point, as it looks like the current version 2.0.1 is significantly different from the branched version 2.0.0 that you did your work on.

@samgreen samgreen closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.