We developed an app, and it works perfectly on several different emulators and devices, not once crashed, but both times we tried submitting to Apple it gets back to us as "2.1 - apps that crash are rejected" (or something).
I cant seem to find the log from them, or any additional infos. Is the crash log available anywhere? Or just ANY info? They only say that it crashed on an iPad 3rd Gen with iOS 6. We ran on a device like that and it didnt crash for us.
Unfortunately, Apple doesn't provide detailed logs of their review process, although crash logs are sometimes provided, as indicated by #jsd in the comments below.
In theory, crash reports get synchronized with iTunes and can be collected by Apple and provided to you via iTunes Connect, but in practice, that rarely works - or only with large delays.
However, you could integrate some Crash Reporting into your App. Here are a few services that allow you to do that without much hassle:
HockeyApp
Crittercism
BugSense
TestFlight
Crash reporting integration in production versions of my apps have been proven to be very helpful, so I'd highly recommend this. Good crash reporting services provide an SDK to be included in your app, and generate symbolicated, readable, ready-to-use crash reports that make tracking bugs very easy.
As for the cause of your app's crash, here are some basic guesses:
Do you use ARC (Automatic Reference Counting)? You should.
Did you run the Static Analyzer in Xcode (Product ➞ Analyze)?
Did you test with different environments (e.g. internet connection via 3G, WiFi or none at all)?
Have you deleted and reinstalled the app on your device, or did you just update it?
Related
We have an app live with thousands of daily users. We released a new version in phases, where the current 2% phase is paused.
We use fabric/crashlytics for logging the crashes. The Environment class is reading data from the Keychain, and is developed by ourselves. The error of the crash is errSecInteractionNotAllowed.
Fabric reports 121 crashes in our Environment class on version 2.1.2, while XCode only reports 3 crashes on the same version.
The only reason we can think of: We read something about iOS calling the app in the background while automatically updating the app. When the device is locked during the update, the Keychain will be locked as well. This would result in a crash. It might happen that Apple doesn't report this crash, since it is caused by the Apple updating system.
Is there any other clue that explains the difference between Fabric and XCode crashes?
To see the Xcode crashes, users have to explicitly enable a setting "Share crash reports with apple and developers" (I think thats what its called) either during phone setup or later on via iOS settings app. If they don't enable it, you won't see anything. Most people I know don't enable it as they are worried about privacy.
Crashlytics doesn't require users to agree to sending reports. So its extremely likely crashlytics will report a higher volume of crashes.
My app is now going on to production phase. If I use third party crash-analytics sdk in my production app , will it suppress my iTunes-Crash Report.
No, it won't. I have Fabric with Crashlytics installed in various apps and I still see the reports in iTunes Connect.
Apple will always get crash reports. Apples crash reporter runs out-of-process, all 3rd party crash reporting solutions run inside your apps process. Depending on the quality of the 3rd party crash reporter implementation, Apples crash reports may not have the best quality.
There are some crash reports that you will only get from iTunes Connect which is basically all that are technically app kills and not crashes, e.g. when your app blocks the main thread too long, or if it takes too long to launch or exit the app.
One difference is that you may not get access to every single crash report from Apple and it is unknown when they show reports and if they do any sampling or similar. Crash reports will also only be sent to Apple, if the user agrees to share this information in general when setting up the device or changing the according setting in the settings app. There are reports that only about about 30% of device users activate this settings. The amount may vary by app and can of course also yield in bigger percentages.
My app got rejected and it is showing this message:
It says it has bugs in iPad running, but I have only built the app for iPhone and not for iPad.
When I'm testing it on iPhone 5s having the same function it is working fine and in live tv I'm giving a url which gets down from the server some times and shows the message this event is currently not working.
How can these issues be resolved.
We found that your app exhibited one or more bugs, when reviewed oniPad running iOS 7.1.1 and iPhone 5s running iOS 7.1.1, on both Wi-Fi and cellular networks, which is not in compliance with the App Store Review Guidelines.
The Live TV features does not work.
For discrete code-level questions, you may wish to consult with Apple Developer Technical Support. When the DTS engineer follows up with you, please be ready to provide:
- complete details of your rejection issue(s)
- screenshots
- steps to reproduce the issue(s)
- symbolicated crash logs - if your issue results in a crash log
If you have difficulty reproducing a reported issue, please try testing the workflow as described in <https://developer.apple.com/library/ios/qa/qa1764/>Technical Q&A QA1764: How to reproduce a crash or bug that only App Review or users are seeing.
Follow the information in the tech note that was mentioned in your rejection. This makes sure that you are testing the identical app that was sent to Apple. Debug builds may behave differently from Release builds for all kinds of reasons.
There may be something in your local environment that makes things work only on your network. Go to the nearest Starbucks and try the app there.
Your app may do things that crash when it is run first but fix things for the second run. Erase the app from your device before trying it.
You may know weak points of your app and avoid them subconsciously. Apple's testers don't. They try to break your app. Get someone to try out your app and pay them money for problems found so they try to find the problems.
I was using Evernote and it crash once, So after crashing I reopen it and it ask me for submit crash report to developer.
After some googling I have found in my iTunes Connect Account in Application detail there is one option called Crash reports.
So my conscience is that how to enable crash report submission in Application.
If the app asks for sending crash reports this has nothing to do with iTunes Connect.
The reports you see in iTunes Connect are send automatically by the phone (or iTunes?) when the user has agreed to send diagnostic reports when they set up their device. This happens automatically, you don't have to configure anything at all. Just go to iTunes Connect and get the crash reports.
But to be honest, iTunes Connect crash reports seem a little bit unreliable. If you see them at all it takes almost forever until you see them. Another culprit is that you have to check for new reports manually.
So Evernote, like basically everyone else, switched to a 3rd party service for crash reporting.
I use crashlytics in my own apps. But there are many others.
A good read might be Ray Wenderlichs Overview of iOS Crash Reporting Tools: Part 1/2 and Part 2/2
Some personal experience:
Since my apps don't crash often I usually see "Too few reports have been submitted for a report to be shown." in iTunes Connects crash reporter. But when I open the console of crashlytics is see 6 different crashes right now. Most of them affect only two or three people but it's good to be aware of new issues, even if few people are affected.
iTunes Connect does not show crash reports for prerelease versions of iOS. But it happened that I had a horrible bug in my app that lead to a crash instantly after people opened the settings of my app on a prerelease version of iOS. After the first crash report came in via crashlytics I fixed that bug and submitted an update. Because I didn't have time to test against the first betas it would have taken a while to be aware of this crash if I had relied solely on iTunes Connect.
I have an app in iTuens which is quite popular and the user are writing bad reviews saying that the app crashed sometimes without any reason or explanation.
I have tested the app both on simulator and on a real device. It works fine for me and there are no memory leaks in xCode either.
What can I do in this situation to fix the crash?
Is there any crash reporting API that I could implement in the app so that the user can send the crash log to me within the app?
There are multiple options available, some fully open source, some partly, some free, some paid.
iTunes Connect mostly doesn't work. The reasons are:
In older iOS Versions, people needed to sync the device to iTunes, which would then upload the crash reports to iTunes Connect. But these users had to agree to "sending anonymous usage and diagnostic data" to Apple when setting up the device. Most people just don't allow that.
In newer iOS Versions (I think it started in iOS 6) the device is sending crash reports directly to iTunes Connect. BUT also in this case, the user has to approve "sending anonymous usage and diagnostic data" when setting up the device. Most people just don't allow that again. You can check yourself if you allowed it in the Settings app under General, About, then scroll down to Diagnostics & Usage.
So the best way to get crash reports (sadly) is to include a crash reporting library into your app. Due to privacy reasons, you should allow the users to allow or deny sending the reports. Most people do allow this, since the dialogs mostly say something like anonymous data to fix the bug that caused the app to crash and (hopefully) won't send any privacy problematic data in then too. But the magic is I think, that it doesn't say usage data in such a global context. Never had problems in all the years not getting crash reports even though showing alerts and letting the users decide, also with an option to Always send.
The following answer shows an overview of available crash reporting solutions: how to generate crash report using code like crash report provided by Apple
Just an update for ios 8 & 9:
On your iOS device, go to Settings > Privacy > Diagnostics & Usage, and select Automatically Send or Don't Send.
When you turn on Automatically Send, you can also turn on Share With App Developers. This helps developers improve their apps by allowing Apple to share data, as well as statistics about how you use their apps.