Easiest way to get logs from beta tester iOS device? - ios

I have a beta tester who is experiencing a crash upon launching my app. I have Flurry Crashlytics enabled, but I guess it isn't lasting for long enough for those reports to be sent out.
He's a remote user, so I can't plug his computer into my computer, and I doubt he has XCode or any other development tools installed on his own computer.
How could I get the crash log from his phone so I could have a better idea of where the issue lies?

You can have him access the logs directly on the device under Settings, Privacy, Diagnostics & Usage, D&U data. Here it lists the crash logs. You could have him copy and paste the log to send it to you.

Related

Possible to speed up distribute crash log to Xcode?

If user select distribute crash log with App Developers, we can see code level analysis where crash happens. But need to wait for log half a day.
If device is in our control, could we speed up this process?
If it's a debug / development build you should be able to extract the logs through XCode by connecting the iOS device to your Mac. In XCode open Window > Devices and Simulators and select the device.
For App Store / Enterprise builds you may want to consider a 3rd party exception / crash reporting tool which supports iOS. For example:
Bugsnag
Sentry - Available as a hosted product or open source
Firebase Crashlytics

How can I enable logging to Xcode->Device manually on deployed iOS apps?

I'm trying to capture some log that's leading to a crash of the app. I can't reproduce this issue other than on production (deployed on app store). I tried adding NSLog to watch it in Xcode devices when the issue happens but NSLog gets called pretty frequently (once a second), uses too much CPU and the phone becomes hot. So I want to only enable logging when the device is plugged into XCode. Is there any way I can manually enable logging?
Thanks

Bluetooth diagnostics logs on iOS

I'd like to generate Bluetooth diagnostics logs on iPhone. I've installed Bluetooth Development Profile and I can click on "Save logs". But where can I find them and how can I transfer them to PC?
Preferably without iTunes, as on Windows I have very bad experience with this SW. I'm new to Apple ecosystem.
Thank you.
Your answer can be found in the Apple documentation here.
The steps are as follows.
Download and install the profile on your device (this can be done through Safari on the device).
Restart your device.
Reproduce any bluetooth commands you would like to diagnose.
Go to Settings > Bluetooth and select Diagnostic Mode
Add short description of the problem and tap Save
Sync device via iTunes (there doesn't seem to be a way to pull them manually without a rooted device).
Windows 7, 8, and Vista logs can be found at:
C:\Users\[Your_User_Name]\AppData\Roaming\Apple Computer\Logs\CrashReporter\MobileDevice\[Your_Device_Name]\BluetoothDiagnostics\
OSX logs can be found at:
/Users/[Your_User_name]/Library/Logs/CrashReporter/MobileDevice/[Your_Device_Name]/BluetoothDiagnostics/
The logs will be saved into timestamped folders like this Logs-2015.12.8-00.50.55/.

How to get access to beta device logs using Apple's TestFlight

In the old TestFlightApp, there was an SDK that allowed developers to log info on the device and then access those logs from the TestFlight website.
After the Apple takeover of TestFlight, I'm not seeing an option to do this through iTunes Connect.
Does anyone know of a way to do this using Apple's new version of TestFlight? Or does anyone have any recommendations for a simple approach to viewing device logs during beta testing?
If you can get your beta testers to send you log files manually, you have a few options. You used to be able to use the iPhone Configuration Utility to view device log files, but it no longer works as of iOS8. The only OS X tool to view device logs other than Xcode that I've been able to find is iOS Console from Lemon Jar Labs (http://lemonjar.com/iosconsole/). It's a very nice tool and I actually prefer it to the Xcode console log - I especially love the filtering ability. I've also seen reference to iTools (http://www.itools.cn/) that works under Windows being able to access device log files, but have no personal experience with it.

App crashes on iPhone 5S but not on iPhone 4S.

I have an iPhone app that I have developed and tested on my iPhone 4S. The app is released on the market and some users claim that the app is unusable as it crashes on start up.
I have done exactly the same things as the users have to their devices, running the same version of the app on my iPhone 4S and I cannot get it to crash.
I have been to the houses of users and plugged their phones into my computer to get the log read out and when I do, I get errors that I am not getting on my phone and my mac.
I am completely at a loss as to how I start to find the solution to a problem like this. Does anyone have even the faintest ideas?
A good start will be to integrate a crash log collecting, crash reporting SDK in your app like HockeyApp, TestFlight, Crittercism or QuincyKit.
This will send you the crash logs to you so you don't have to collect them manually. These tools can also automatically symbolicate the crash logs for you so you can find the source of the crash in your code.
You should test a release build before you ship it. Archive a release build and distribute it as an Ad-Hoc build. You can load a saved IPA file to your iDevice using iTunes or Organizer. The thing is that you can test a release build which is the same you would ship to the App Store (they are signed differently but the build configuration is the same unless you changed that).
iPhone 5S ships with 64-bit A7 processor. Your iPhone 4 is a 32-bit device. Most likely processor architecture is not the case but as Apple says: Before you distribute your app, you must test it on actual hardware. Some of the runtime changes can be detected only when the app is running on a device. I recommend you updating your set of test devices with different models. I still own an old iPhone 3GS which is great for spotting performance issues.
The general comments others have posted are correct. Add crash logging into your app with a pre-made SDK and test on an actual device. I can't add much more to those points, but I will tell a short story about a similar bug that I found in one of my apps in the hopes it helps you with your issue.
Our app was predominately iPad2 users. When the iPad4 was released, waves of our users upgraded and they started experiencing an issue that was not present on iPad2. Two network requests were fired off at the same time and the result from one of them was crashing. We eventually found out it was a concurrency bug. The result of the first request was being processed "too quickly" and the code was getting to a critical section of code that was not thread-safe with the other request handler.
While this bug was still possible on the iPad2 if the network latency fluctuated just right, it never happened that way. The iPad4 made it happen almost every time.
You can use https://github.com/CocoaLumberjack/CocoaLumberjack lib to collect crash data logs from users.
Have you considered installing a crash logger in your app? There are plenty out there (Flurry, TestFlight, Crittercism, Hockey App, etc).
Most are fairly straightforward to install - add a framework and a couple of lines of code. Once you've done this, you'll (hopefully) be able to see exactly where your app is crashing on the users' devices, without having physical access to them.

Resources