9 ms·
Heap for iOS: the capture-everything approach to mobile analytics
- sama 13y agothis is how analytics should be done. congrats, guys. proud to be an investor!
- randall 13y agoI've been having an awesome time with Heap for the web. Their response time is fantastic for user feedback too. Glad they exist.
- usujason 13y agoIs the "capture everything" approach to analytics a way to differentiate themselves from more enterprise level mobile analytics solutions such as Localytics?
- kevingibbon 13y agoBeen testing Heap on iOS out for the last few days. Awesome product. Congrats guys!
- eliperkins 13y agoCurious if this means that the Heap SDK will require for the shipped app to be symbolicated or not, given how their example is written.
- nwhitehead 13y agoDo you have any case studies showing what the actual overhead is? I love the idea but would worry about negatively impacting the customer experience.
- matm 13y agoCPU-wise, our SDK adds up to 2% overhead to normal UIEvent-handling. This is with frantic and constant user input - in practice the overhead is much less. Network-wise, we batch user activity and by default make a network request every 5-10 seconds. We'll expose a config variable so devs can tune this frequency on a per-app basis.
- anonyfuss 13y agoYou're keeping the WWAN/WiFi interfaces awake, which burns a significant amount of battery, just because you want to gather data from the user. On top of that, burning 2% overhead on UIEvent handling (which also impacts battery). What a waste for something that users don't actually want you to be doing in the first place.
- DenisM 13y agoKeeping network alive like this is not cool - the radio will drain the battery. It would be much better to not only allow a configuration for how often the sync happens, but also allow the app to manually trigger sync, normally at the same time as other network activity is going on so that no extra power is spent bringing the radio up and down.
- matm 13y agoThis makes total sense! Manually syncing is a good idea. We need to make sure we have reasonable defaults in place, though, and so far, we've had no issues from our beta testers.
- mpweiher 13y agoSteady small but spaced updates is just about worst case for battery if you're on 3G. You want relatively large batch sizes so the system can turn the radios off and keep them off. Obviously doesn't matter if the main app is using the radios...
- jordanthoms 13y agoThere is an excellent guide on the Android site covering this: http://developer.android.com/training/efficient-downloads/efficient-network-access.html http://developer.android.com/training/efficient-downloads/ef... (and it really applies to iPhones also)
- drewvolpe 13y agoHow much does it affect battery life ? I would imagine 2% extra CPU plus frequent network connections would add up to a lot of extra battery drain.
- boctor 13y agoWe need more mobile metrics innovation so I welcome this. Coincidentally just today I released an open source library on iDevRecipes to do smarter metrics. My approach is to use base classes. To achieve the no extra code part, is the SDK using swizzling?
- deleted 13y ago[deleted]
- anonyfuss 13y ago> To achieve the no extra code part, is the SDK using swizzling? They must be, which is a serious reliability/stability/correctness issue in its own right.
- idunno246 13y agomore likely they are installing a custom responder. At least, I think it might be viable with that
- DenisM 13y agoYou can easily intercept all UI events via UIWindow or UIApplication subclass, no swizzling required. I do this routinely to detect when a user is idle: no events - no activity.
- deleted 13y ago[deleted]
- deleted 13y ago[deleted]
- jazzychad 13y agoSo, I'm curious how this will compete with free offerings like Flurry which do similar-ish mobile analytics tracking and can handle millions of users per app for free. I got very excited about this Heap announcement but looked at the pricing. Multiple thousands/month for sub-million unique users may be considered steep (but then again I'm a cheap developer). I've been looking for a Flurry alternative (since I just want analytics and none of their ad junk). Mobile apps are kind of a different beast from websites. Apps can have huge number of unique users, whereas SaaS websites tend to have many fewer users by comparison.
- matm 13y agoWe'd definitely appreciate more data points on pricing - care to send us an email at team@heapanalytics.com, and we can discuss more there? It'd be great to understand what sort of price point works for people like you.
- shloime 13y agoI've wanted to use heap in the past, but the plans aren't very startup friendly..
- matm 13y agoSimilar to my comment above: it'd be great to understand what sort of price point works for people like you. Feel free to send us an email at team@heapanalytics.com.
- DenisM 13y agoWhat is there on the analysis part? Restoring user behavior from touch events is a bit like restoring a steak from ground beef. Do you guys offer any help with that? Something to string individual events into a path?
- matm 13y agoYou can try out the analysis part with some sample (web-only) data at: https://heapanalytics.com/dashboard/demo https://heapanalytics.com/dashboard/demo We let you define events after-the-fact based on the gesture type and the corresponding target variable. Once that event is defined, you can include it in funnels, view it in user-specific activity streams, slice n' dice it, etc.
- DenisM 13y agoThanks for the demo link, that clears things up a bit. FYI, I don't think you're using the work "cohort" correctly in the video. Cohorts are stable groups, composed of the same people over time. "Users who send 5 links" is not a cohort, as the group's composition changes over time.
- matm 13y agoHuh, interesting! Will keep that in mind.
- DenisM 13y agoHow do you define user's "join date"? Is it the first time you saw the user? For that matter, how do you identify the user? If the user logged in from two different machines, does it count as one user or two?
- matm 13y agoYes, first time we saw the user. It counts as two, since by default we identify users with first-party cookies. We offer a heap.identify() API call that can be made to associate multiple devices with one identity.
- eps 13y agoFucking hell. This is exceptionally disturbing. This sort of service needs to be legally regulated now. The app devs must be required to warn in large block letters that evryhting you do in the app, even while offline, is streamed to some random company. You can argue all you want that "everyone's doing it", but it doesn't make this any less unacceptable and going against basic expectations of privacy.
- ammmir 13y agoi think app devs may already be liable if they haven't set up a proper privacy policy for their app that explains what data they collect and how it is used. i would not automatically enable analytics tools like these without consulting a lawyer.
- jstsch 13y agoAgree 100%. I am amazed by all the positive remarks around here. I understand the startup-vibe, but I would expect 'hackers' around here to take note of privacy concerns.
- jazzychad 13y agoSorry to bust your bubble, but most every major app (and every single game app) is already doing this by sending activity data to one company or another.
- anonyfuss 13y agoDoesn't make it right. It's also astonishingly user-hostile; wasting the user's resources (bandwidth, battery life, cpu) on things they don't care about, without their permission. On top of that, doing anything economical with the analytics is very rare. It's very difficult to isolate meaningful variables, and you're almost always better off spending that money paying a designer to tackle issues and features that really ought to be obvious to you already ... ... unless you're Zynga, I guess.
- DeusExMachina 13y ago> On top of that, doing anything economical with the analytics is very rare. If this was true, then A/B testing would be useless, while it's quite the opposite.
- DenisM 13y agoSo here's my quick feedback to the team. Pros: - Pricing is fine with me - I'm doing a paid SaaS app with relatively high per-user revenue. You will likely price out most of other devs, however. - I like the retroactive analysis. The idea of grab everything and let god sort it out speaks to me. - I like doing both device and web analytics in one place. I don't think doing one or the other makes sense anymore. Cons: - I don't see a way to make sure a user from different devices is counted as one user, not two. I want to track the user across all touch points. From experience I know solving this problem is very-very hard - sometimes you want to see what the user did before he identified himself, which is where your idea of "one user per session" falls apart - a session might have different users in it signin in and out, and then there is a period between signins which can be attributed to either of the authenticated users before or after in the same session. Not to mention apps with support for multiple-account apps, (e.g. iOS gmail app where identity depends on which part of the app you're in). With all that said, I don't think I will be trying it out. There are tons of analytics services out there, and I don't feel like I can make an educated decision about which one to try first, or at all. Where you can help me is by providing a survey of the problem space, talking about the problems, potential solution methods, and then addressing which products implement which methods. Good luck.
- matm 13y agoGreat, thanks for the thorough feedback! Re: your first con. We offer a heap.identify() API call that associates activity with one canonical identity. For instance, if a user logs in on a new separate device, you can call heap.identify({handle: 'DenisM'}) to associate all activity on that device with the existing user DenisM. We hope you reconsider and give us a go. We're always down to talk more in person and better understand your use cases. Just ping us at team@heapanalytics.com.