To check what iOS version used by my app users - objective-c

I have an app published on the AppStore.
I plan to change the minimal requirement of my app to iOS 5.x because there's an issue that only exists in iOS4 and it has been fixed in iOS5.
Is there any easy way to check what iOS version used by my existed users?
I want to know the statistics so I can decide whether to change the min requirement is OK or not
Thanks!

The only way to check this would be if you had already written code to send usage statistics such as [UIDevice currentDevice].systemVersion, [UIDevice currentDevice].localizedModel, [UIDevice currentDevice].systemName, etc to yourself (a webserver/db you control) in your current App.
If it is not currently coded in your live App, then there is no way to determine this information. It may be a good idea however to program this in to your next update for future situations such as this.

You need to add code for this, such as analytics or sending back, you also need to be careful with analytics as Apple discourages sending device information, but OS should be ok. The answer is no, not without recompiling, perhaps crash reports might give you an idea, but there's nothing else you can do.
Perhaps you would care to ask how to fix the issue instead?

you might use some service like TestFlight to track what version people are using.

Related

Is GoogleYolo / Google one Tap Working again?

So I read some old threads here about Google deactivating the Google Yolo/One tap option (that was at the end of 2019). I'm not sure what's the status now since the documentation seems to work again.
Anybody has any idea about the current status of the feature?
Thanks
The project seems to be active again and here are some recent release notes.
I have tried it and it seems to work pretty well.
PS: Please check the browser support and know your user base if you plan to use that as your only authentication mechanism though. Always have a fallback auth mechanism if onetap isnt supported or not displayed.

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

Forcing updates on IOS

Will apple reject an app for doing things like putting up a screen that says: "We've added lots of new features.You need to update before using this app..."? I'm unsure if this is a nosy thing to do but it may be something I need if I ever create lots of new features that need widespread frontend adoption.
This is fine. Clash of Clans for example will not let you play if it detects a newer version on the Appstore. Many online-related apps need to be up to date.
Also, you don't need to force all updates. You could simply force critical updates only.

get iOS 7 udid without access to a computer?

I need to ask my clients to send me the udid of their iOS devices in order to add them to an adhoc distribution profile. The main problem is that they are used to iOS but not much to computers. Anyway, it would be a pain for me to explain them how to install iTunes (or even Xcode) to get the udid. Most of the tutorials which describe the iTunes process are in english, I don't want to loose time to translate one of them. And even if I do it, I fear that they will not appreciate loosing their time following it. Any suggestion ?
I use a web online tool at http://www.easy-udid.com to get my customers UDID, I think it's the easiest way for them.
Also you can use service http://udid.io
It is easier because you don't need to ask your clients to write your email address. You just send them link “http://get.udid.io/?mail=your#mail.com” and they will need only 5 taps to send UDID on "your#mail.com"

Find out which version of app was first installed - iOS

I want to change my app from a paid version to a free with ads. However, I don't want the people that originally paid for the app to get the ads.
I was thinking I could include a new update that has extra code that sets up some UserDefaults saying the version doesn't have ads and then do the update to the free version. But that doesn't seem like a very reliable solution.
I think, it depends on minimum OS version, that your program can be run on. For iOS 5.0 and later you can try to use iCloud to store some flag about purchased version. It allows you to set this flag not only for one device, but for the user's account.
Or you can store this info in the keychain to get it later. But in this case your user will not be able to have no ADs on some other device with his(her) account.
Anyway, as far as I know, you need to create an update for your app first to write this flag anywhere. And only in some time make an update with ADs.
I will be glad to see comments if someone has another thoughts about this issue.
It seems there is no reliable method to detect whether someone paid for your app or downloaded it later when the price has been changed to free. For this reason I have decided to create two separate entries in the app store.