Fetch/Refresh Health Kit Data Programmatically? - ios8

When you open the Health app, it updates it's values from somewhere, but if you don't actually open the app, the Healthkit only seems to update randomly (and very scarsely). For example, Step data objects don't get pulled from (wherever the iOS source comes from) or the Apple Watch until you actually open the Health app.
Is there a way to update the information programmatically? Or is the Health app itself just querying CoreMotion and making its own Step object that way? (This wouldn't help me much, since I'm actually trying to use the Healthkit to monitor heart rate)

You cannot control how frequently HealthKit imports data from the Apple Watch. If you want to get live values for readings that come from CoreMotion on the phone itself, such as step counts, you can use HKObserverQuery or HKStatisticsCollectionQuery with an updateHandler.

Related

Unable to submit tvOS app to store - Missing on-demand Game Center resources (ITMS-90547)

I've been (rather unsuccessfully) trying to package a tvOS app built with Unity 2018.3.
The app supports Game Center, and as required in the docs I've added the necessary Leaderboard images into an Asset Catalog within Xcode.
The app builds without issues, but fails at the last hurdle of trying to get it uploaded to the App Store:
ERROR ITMS-90547: "Missing On-Demand Resources. Your app contains Game Center content that is referencing missing on-demand resources."
I've been searching for solutions for a LONG time, but I seem to be the only person who has got this issue according to Google!
Here's some relevant background info:
I'm not using On Demand Resources in the tvOS app - it's below the original 200MB limit (that shouldn't even matter anyway, as the limit is now 4GB). So I'm at a loss as to where it's seeing any On Demand Resources don't know where this is coming from.
In the Build Settings, Embed Asset Packs In Product Bundle is set to NO. (I've also tried it on YES to no avail!)
In the Build Settings, Enable On Demand Resources is set to NO.
The Leaderboards all display correctly within Game Center view controller in the app.
The Leaderboard assets all appear in the Resource Tags page of Xcode, in the Download Only On Demand group. Despite my best efforts I can't remove them from here.
None of the guides for tvOS or Game Center make any reference to any On-Demand Resources, so I'm at a complete loss.
If anyone has any pointers on anything I could be missing I'd be very grateful!
There's a tweet from a nice person who also ran into this issue.
From what he says, the explanation seems to be that "tvOS HAS to have this setting turned on because it loads Game Center leaderboards on demand whether you want it to or not."
So i recommend you try what he suggested:
turned off Game Center under capabilities for all targets
Enable On Demand Resources is set to Yes.
Optional: you can play around with the Embed Asset Pack in Product Bundle build setting as well.
Hope this helps for anyone stuck on this.

Can I keep a Watch app running in background?

I know iOS allows background tasks to run and, for example, continue to receive location updates, but is it possible to do this in a watch app?
In Xcode 9.3, I have configured my app for "background modes" and selected location, and that has created for the WatchKitExtension's an Info.plist, an entry for "Required background modes" of "App registers for location updates".
But my watch app still suspends when the screen turns off, and when it is in the dock.
The App Programming Guide for watchOS, however seems to exclude the possibility of running in the background to receive location updates as it only allows background processing for four classes of activity:
Background App Refresh Tasks. Use a WKApplicationRefreshBackgroundTask object to ...
Background Snapshot Refresh Tasks. Use a WKSnapshotRefreshBackgroundTask object to update ...
Background Watch Connectivity Tasks. Use a WKWatchConnectivityRefreshBackgroundTask object to receive data sent by your iOS app ...
Background NSURLSession Tasks. ...
Other posts to SO indicate it's not possible, but proving a negative is difficult, so I'm asking again:
Am I "flogging a dead horse" by trying to keep the watch App operating in the background for receiving location updates, or is Xcode is making promises that WatchOS won't deliver.
I'm delighted to be able to report that the horse I have been flogging for the past two weeks was not dead after all!
I have discovered an additional state in which my watch app will continue to run in the Background which does not require HKWorkoutSession.
These settings did the trick:
locationManager.allowsBackgroundLocationUpdates = true
and in watchKitExtension info.plist:
set UIBackgroundModes (Required background modes) to location (App registers for location updates)
And I repeat: I am NOT using healthKit
Now my app continues to run even when the screen is off and when the app is out of the Dock.
No, it is not possible.
As the WatchKit Programming Guide clearly states, WatchKit apps cannot use background execution except for 3 use cases:
Network operations using URLSession
Playing audio using WKAudioFilePlayer or WKAudioFileQueuePlayer
Run a workout using HKWorkoutSession
You cannot receive location updates in the background, according to the WatchKit Programming Guide, that should be done in the iOS app that is connected to your watchOS application.

Is it possible to get an app to open up when entering a beacon region / within range of a beacon/ibeacon

I'm exploring the end user experience for a beacon prototype but I'm struggling to find any end-user scenarios that involve the app becoming active / opening up on the screen when within range.
I can get the app to send a notification and this is the most likely experience on both Android and iOS but does anyone know if it is possible to get the app to open up?
It's unlikely that I'd want real customers to have their experience interfered with in this way, I think it's ok if the app is already running and is open but not if it's running but not open.
Thanks
On Android this is possible. The reference app for the Android Beacon Library demonstrates how to do exactly this.
On iOS, it is not possible due to OS security restrictions. See here for details. The best you can do is send a local notification to the user when the beacon is detected, then if the user gestures to it, bring up the app.

Location Tracking in Background

I am developing a windows phone app that uses users current location, I am making the app in 7 OS. My question is, Can I track the location in background, that is when the screen is locked?
I know this is a possibility in wp8 as it provides us with GeoLocator class, but can I achieve this in wp7? I am basically making a runtracker app hence I would like my app to track the location even when its in background, is it really feasible?
Your help is always appreciated!!
It is possible to keep the app running under lock screen, as it does, for example, Endomondo app.
Using Idle Detection, you can keep the app on, although screen is locked, and you can keep on tracking the location. Actually, it is not running in background, but in the foreground. Just the screen is locked. So, be careful not to drain user's battery.
You have to set the PhoneApplicationService.ApplicationIdleDetectionMode property to Disabled, for example in InitializePhoneApplication() method in App.xaml.cs:
PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
Note that there are special certification requirements for this type of apps. Refer to section 6.3 (Apps running under a locked screen) of the following page:
Additional requirements for specific app types for Windows Phone
I got the same problem in one on my apps..
I don't think it' s feasible for wp7..
Bt if you want to do it with wp8 you can refer following link.
http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681691%28v=vs.105%29.aspx
And to know about background supported and unsupported API's http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202942%28v=vs.105%29.aspx/css
GeoCoordinateWatcher Class exists in WP7, but here is the documentation from MSDN -
This API, used for obtaining the geographic coordinates of the device,
is supported for use in background agents, but it uses a cached
location value instead of real-time data. The cached location value is
updated by the device every 15 minutes.
More Info : http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202962%28v=vs.105%29.aspx/css

How to make an ipad app impossible to close

I am programming an app for an experiment by the University of Queensland Psych Department. The app needs to be impossible to exit, or at least it would be preferable if it were impossible to exit. This is not a virus- it is for an experiment with the Grute Eylandt Aborigines. Anyways, do any of you guys have any idea how to set the app to be impossible to exit, or even better, to set it so that you have to enter a password to exit it? Furthermore, on a separate subject, do you guys have any idea how I can save the information in the app to the iPhone? This app will not go through the App Store so it does not need to follow App Store rules. Therefore, if there was a way to save "Button (whatever button it is) pushed at (time and date)" to the notes section of the iPhone every time a button was pushed in the app, and/or to save audio recorded using the AudioToolbox framework to the actual iPod library, that would be fantastic. Otherwise I would have to make some sort of db or plist file to save everything with if-then statements, I think. Thank you!
Check-out iOS 6 Accessibility feature:
It allows a parent, teacher, or administrator to limit an iOS device
to one app by disabling the Home button, as well as restrict touch
input on certain areas of the screen
Put the device in a "kiosk" case so keep the home button from being pressed. For storing the data to the device, if it is a small amount of data, use NSUserDefaults, if this will be a large amount of data, I would lean more toward Core Data
Easiest solution on the market -- MOKIMOBILITY has developed software that allows you to lock the home button. It is Mobile Device Management software with a full range of security features. It essentially locks down your iPad so the user is only able to use what you what them to use. It is called +MDM www.mokimobility.com The software can be managed mobile-y from a central interface. Slick software.

Resources