Sencha touch 2.0, android app keeps showing loading screen forever on certain devices - sencha-touch-2

I've finished writing my first Sencha app and released it in Android market place. This is basically for a conference being held in Metro Detroit Area next week. I'm also introducing Sencha in my company as a viable mobile option.
However once released into the market, it does not seem to load on certain devices. How to find out what is wrong on the device? It works great on desk top and also on certain android phones and nexus pad but does not load ( the user keeps seeing the loading page for ever) in certain other phones. I would like to know how to debug this issue? Does Sencha log the console log exceptions in logcat? Any help in this direction is highly
appreciated!
I'm using Internet permissions to access twitter feed and google maps. Kind of guessing that the issue could be because of accessing Internet but how to find that out?
Thanks

From experience, this is generally due to javascript errors before sencha has been properly set up. This can be missing functionality or include issues, picky parsers etc. There is no real good way to debug this more than to get ahold of an affected device and set window.error = alert before any other javascript is run.

Related

How to create background location service in Appcelerator Titanium working after restarting device

I want to make an application which will send information to a server about user's location every 30min. It is needed to provide location specific push notifications.
I need such functionality for Android/iOS, which would work in background (also if device is restarted). I found some articles covering background services and I created background service doing that, but after phone is restarted it won't work.
Is it possible with Android and iOS? How can I achieve that?
With iOS, no. With Android, yes.
Apple has gone to great lengths to limit what apps can do. You can do some things in the background for an extended period of time (GPS, play audio, Voip, etc), but after a reboot your app will not be restarted until the user opens it again. There are exceptions to this. Voip apps are allowed to restart after a reboot, but apple will not approve your app for the App Store unless you actually have a place for a user in your app to use the Voip feature. Geofences are a possibility, but I haven't had experience with that feature yet. In my experience, Apple does whatever they can to make sure your app doesn't run forever.
With android, there is more flexibility and what you propose is totally possible. I've listed some important links below, since most of those solutions are far better documented than what I can do here.
Essentially you need to register as a boot receiver and then send an intent to start a titanium android service when the boot event is received. I don't have experience with starting a titanium service, but I'm sure its a simple intent you need to fire. Either way you'll need a module for this native code. I attached a link to a bencoding titanium module that may help you, although there may be some others out there. You may even need to code one yourself.
Samsung is notorious for stopping your app with their SPCM feature. You may want to familiarize yourself with it. I've added a stackoverflow discussion link below.
I don't know all of your system requirements but honestly, for any app I would try my best to not run forever. It will hurt the battery life for your users and will add a lot of complexity. Maybe you could simply have the app check the GPS coordinates when it receives a push notification and decide right there and then whether to present a notification to the user? Just something to consider.
Either way good luck!
How to start an Application on startup?
http://docs.appcelerator.com/platform/latest/#!/guide/Android_Services
https://github.com/benbahrenburg/benCoding.Android.Tools
Dealing with Samsung SPCM killer

iTunes Connect doesn't ask for updated screenshots?

I've updated my iPhone app to support the iPhone 5 screen..
I've done this before for another app and I was forced to upload new screenshots taken with the iPhone 5.
This time however, iTunes Connect just displays the status as "waiting for review" and isn't mentioning anything about the screenshots..
I'm slightly worried something has gone wrong? App works great on iPhone 5 and simulator though.
It turns out Apple can block apps during the review process that have something wrong with metadata. If they decide your metadata is wrong they'll just change your app's status to "Metadata Rejected".
Here's the quote from the rules for this status:
Appears when specific metadata items aside from your binary have not
passed review. To resolve the issue, edit the metadata in iTunes
Connect and your existing binary is then reused for the review
process. You receive a communication from App Review in the Resolution
Center regarding the reason for the metadata rejection.
When things change to the AppStore (Apple adds a device) they might require you to get new screenshots. But if nothing changed in their system, it's normal that they don't ask.
Don't worry!
They copy over the screenshots from your last version of the app (or is your Retina4 screenshot section in itunesconnect empty?). So if you donĀ“t want to update them, it should be okay like this.
Chances are your app has not hit review (and now as of the 21st) and won't be reviewed until after the 29th. Once your app hits review, it will become rejected for the missing screenshots. If you want to save yourself some time and pain, update the screenshots while Apple is on their downtime for the Christmas holiday. You'll thank yourself later.
My app got accepted yesterday, no word about the screenshots.
App works fine on iPhone 5, mailed Apple to complain this probably is a bug (iTUnes Connect does not recognize localized Default.png, which is what is checked to verify it is iPhone 5 optimized I believe.)

Robust real-time communication between iOS App and Mac App

We're working on an exhibit (http://pulse.media.mit.edu) and I'm brand new to iOS, objective-c and Xcode. The exhibit deadline is in one week and I'm stuck.
The problem I'm having seemed simple enough.
Our exhibit has a projector and an iPad. The projector will be hooked up to a mac and be playing a video. The iPad will act as a controller for those videos. More simply:
I have 50 videos on a Mac. I need to develop an application on the Mac, that, when opened will loop one of the videos.
On an iPad, I need to develop an app that can change between the videos on the mac in real time. The iOS app is already designed, we're just struggling with some code.
On the mac, when the iPad tells the Mac to change video, we'd like it to switch between videos using Core Animation, like this (http://youtu.be/pyd8O-2mkgk?t=1m).
So my question: What is the most robust way to do this? It has to be able to run in a museum, for two months. Some things to consider:
We are 4,000 miles away and can't monitor it all the time. We'll
check nightly to see if it's still working, but it should run the day
without breaking.
If people unplug the iPad, it should still work.
It should be as robust as possible.
How can I best do this? Should I write to a database from the iPad onto a database running locally on the connected Mac and then monitor that database 10 times every second? Are sockets robust enough to use alone?
If you do suggest a way, can you please point me in the direction of some resources (frameworks, function names, etc) that can help me do this quickly?
Thank you for your time.
I would go for the server-in-the-middle option, because it will be easiest to debug, and requires nothing more than a working internet (wifi) connection on the client side. When having connection issues, all you need is someone who knows how to hook up an iPad or Mac to the internet. And you can see server-side which device has issues connecting.
Furthermore, using plain HTTP sounds like the best way to go for communication, and the backend can be written in any server side scripting language. Both clients should be polling the server every X seconds.
If you get this basic setup working well before your deadline, you could try to get the devices to connect to eachother directly (for a less sluggish user experience), and leave the server solution in there as a fallback method. The Mac app could function as a HTTP server, accepting the very same commands that the iPad normally sends to your server. The challenge will be to reliably know which IP to connect to. You could hardcode it or use Bonjour.

iOS Crash Reporter Service / Alternative to MacDevCrashReports.com

I'm looking for a iOS crash reporter web service. I know MacDevCrashReports but they currently do not accept new sign ups.
I know there is a open source crash reporter framework on GitHub, but I don't want to put that stuff on a server, configure it and so on. A nice web service would be much nicer.
Thanks,
Patrick
I've been using Crittercism for my iOS and Android apps. It's saved me a LOT of time. It has a few more features than BugSense and Hoptoad.
MacDevCrashReports is running out, since I am not able to continue providing the service for free, the amount of data is just too huge. 100.000 crash reports e.g. require about 2GB of storage. BUT I am working on a new service with some friends to provide enhanced functionality for managing crash reports and other developer related data. You might want to check for HockeyApp for news about that.
Until then, you can also use the source MacDevCrashReports is based on, on your own web server. It is completely open source and available at GitHub.
The process of collecting crashes is using PLCrashReporter. Which is more reliable and is async-safe. There are also cases of crashes, like crashes in objc runtime, where it will result in a deadlock (Information by Landon Fuller, creator of PLCrashReporter).
Symbolication of PLCrashReporter created crash log files, can be done with the dSYM bundles, check this description.
Regarding the AppStore argument from Peter. As Patrick points out, this is not working for Ad-Hoc builds, which is one big issue, since you want to find and fix the crashes while testing. On the other side, the crash reports in iTunes Connect are very inaccurate:
The data set only updates once a day
The data is only available after users sync their devices with iTunes and only IF they agreed sending that data. Since most users don't understand the dialog, they deny
You only get a subset of crashes, the top 5
You don't get instant reports, as opposed using an in-app reporter
You don't get grouping of similar crashes as the web service does
You don't get a web interface to work with the crashes, make notes, mark as fixed, etc.
iTunes connect reports for my app to have 0 (zero) crashes, but in my database there are about 200! Check this blog post by futuretap about their experience and findings of using an in-app crash reporter.
There is a new service called BugSense . Give it a shot!
For ad-hoc crash reports you can use TestFlight. It has TestFlights SDK, using which you can collect crash reports and additional data, checkpoints, feedbacks.
If you're distributing through the App Store, you should get crash reports in iTunes Connect.
We're playing around with Hoptoad for some apps. Looks to work pretty well.
I've used HockeyApp and Crashlytics with great success. HockeyApp is nice in that once you've added your IPA file to their service they even provide a download page for you to distribute your build to your testers.
Crashlytics is a little cleaner from a UX perspective but it's still in beta and has a bit of a wait period whereas HockeyApp you can use immediately and it's a bit more mature. It also seems Crashlytics gives preference to apps that are already in the app store when you sign up for the program.
You can also check out BugHD,support iOS,Mac & Android Crash Report
For tracking crashes, I really like Appsee for iOS (although also great for Android apps). It gives detailed crash reports, and also session recordings that let you visually monitor all crashes within your app.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
Appsee.start()
return true
}

Location-based features in iOS

Not sure if this is possible, but I wanted to check it out.
I want to access the GPS features in iOS, specifically on iPad through my app. Ultimately the goal is to be able to see who else nearby is currently running the app as well. Is this at all possible or practical to implement?
Entirely. Check out the documentation on Core Location. Typically the way an app like yours works is that any devices running the app submit their location to a script on your server, then query that script for any other devices nearby.