Beacon based app suggestion on lock screen not shown in iOS 10 - ios

My app uses background beacon scanning. I have written locationManager.requestAlwaysAuthorization() and locationManager.startMonitoring(for: region) in my code. When I open the beacon, the lock screen of my iPad mini (iOS 9.3) shows my APP's icon. However, it's not shown on the lock screen of my iPhone 5s (iOS 10.3).
I have checked the didDetermineState, didEnterRegion, didExitRegion callbacks. All of them works fine on both devices.
Is it a bug or should I do some additional settings to make my APP appear on the lock screen suggestion in iOS 10 device?

The feature that shows a suggested app icon on the lock screen based on a CoreLocation region entry event seems to have been removed from iOS 10, although there are inconsistent reports, and some users with early version of iOS 10 insist they still saw it happening. In iOS 8-10, there is still a separate Handoff feature that often shows Safari icons on the lock screen, that may be confused with suggested apps.
In my tests, the same BeaconWizard app that monitors for a single CLBeaconRegion has its icon appear on the lock screen when the beacon is turned on in iOS 8.3.
It does not show up on the lock screen in iOS 10.1.1.
In iOS 10, a similar Siri suggested apps feature appears if you swipe right on the lock screen. It is unclear what algorithm is used for the suggestions. Location may be one factor, but I am not able to get apps to consistently appear in this list based on location events.

Related

Detect when App is Slide Over on top of running app on iPad

We have a WebRTC Swift 4.2 application using Google's native WebRTC code. We are having issues with Apple's App Slide Over Multitasking feature on iPads.
Issue:
What we are seeing is when our Application is running in a video call on an iPad as soon as another app is 'Slide Over' our app, our application stops using the video camera and microphone until the Slide Over app is closed. Once closed our application gets the microphone and camera back.
Expected Result:
Our application is still able to use the camera and microphone and the user is able to use both apps at the same time.
Questions:
Is there a setting we need to turn on to disallow Slide Over apps? If not is there a event we can subscribe to when the slide over happens so we can request camera and microphone access again?
What we have done:
We have set our application to require full screen in the project settings.
We have tried subscribing to the following events on the AppDelegate:
applicationDidEnterBackground, applicationWillResignActive, applicationDidBecomeActive. These events do fire once for the initial Slide over app open and close but not after consecutive Slide Overs with same app.
Turning on all Background mode capabilities. Has no effect.
On our ViewController.swift we have tried to subscribe to viewWillLayoutSubviews event. This event does not fire for apps opened with Slide Over.
Versions:
iOS 11.4.1
Swift 4.2
Xcode 10.1
I filed a bug report with Apple and they said,
"This sounds like expected behavior, given that only one foreground app is allowed at a time."

How to show iphone app icon on lock screen same as camera on bottom left

How to show iPhone app icon on lock screen same as camera on bottom left.
Is there any framework required to implement or just go to settings page in iPhone.
How to do it exactly please described step wise.
Thanks in Advance
You might have seen in certain circumstances some app icons are showing up in the bottom left corner of lock screen. That is an iOS 9 feature. that may be because of following reason.
You're near a business or iBeacon that is broadcasting its location and you have a corresponding app installed, such as being near a Starbucks store; drag the icon to the top of the screen to launch that app.
You're able to use Handoff to take over from an app on another device. For example, if you're composing an email message on your iPhone and switch to your iPad, drag the Mail icon that appears on the iPad up to load the message you were working on in the Mail app.
When you insert a headphone jack into the device's headphone port, or connect to a Bluetooth stereo, iOS 9 guesses you want to listen to something and displays the icon of the last audio app you used when connecting headphones or pairing to that particular speaker. Drag the icon up to open that app.
Reference : http://www.imore.com/how-use-home-screen-and-lock-screen-your-iphone-6s
Apart from these, there can be more reasons, like if you are using an application at a particular location/time for few times/days, then iOS will suggest the app once you reach that location or at particular time of every day.
you can't do this kind of stuff from code or from your application. It is apple's restriction. and you can't change it or replace with another app. it is by default camera app.

Updating locations while app in background working on simulator but not on device (iOS 9)

I have enabled Background Modes > Location updates in my target's capabilites. I run the app in an iOS 9 simulator, I put the app in background state with Location > City run in the simulator, and it seems to keep getting location updates. But I run the app in a real iOS 9 device and few seconds after going to background, I loose the location services arrow in the status bar and no location updates are received.
On the other hand, I've run the app in a real iOS 8 device and it seems to keep listening for locations (the arrow in the status bar does not disappear).
Why are location services stopping in background in an iOS 9 real iPhone?
I need help to solve this, thanks in advance.
With iOS 9 you also need to set allowsBackgroundLocationUpdates to yes. See the docs here

Xamarin - iOS backgrounding with BT low Energy and TTS

I'm working on a proof of concept app. I'm using Xamarin for iOS. The iPhone app runs in the background and watches for particular BTLE devices and speaks using TTS when the signal is at a certain strength. I have TTS working and I can recognize the BTLE devices when the app is in the foreground.
However, I'm having trouble getting either working when the iPhone screen is off. In Android, I'd just use a wake lock, but that appears to not be available in iOS. I tried setting the background modes in the info.plist file for BTLE and sound, but I don't see any processing happen while the unit is suspended. Can anyone point me in the right direction?
This is just a proof of concept, so I'm only looking at the latest iOS version and I'm interested in even hacky answers.
Thanks!
You will need to create at least one background task UIApplication.SharedApplication.BeginBackgroundTask and end it with EndBackgroundTask when you finish transferring your data.
Note that you will have approximately 10 minutes in background. If user switch back to the app the time will be reset.
You might also want to disable application idle timer to prevent the screen to go black when the user doesnt touch it.

iPhone 4s not receiving iBeacon notifications in background

iPhone 4s not receiving iBeacon notifications in background.
I have an app that acts as an iBeacon and also scans for them.Using an iPhone 5, iPad Air, and iPad mini Retina I get the notifications in the foreground and background.
One of our testers has a 4s and apparently only gets notifications in the foreground. It can apparently take up to 15 minutes to deliver the notification and apparently it is not arriving in that time frame. For background modes I have location updates, external accessory communication, uses bluetooth LE accessories and acts as bluetooth le accessory.
I also have notifyEntryStateOnDisplay set to YES. What is weird is that it does work as expected on all devices so I am curious if anyone else has seen this issue.
Currently I am confirming that:
a) It is for sure a 4s.
b) That background use is on for that app.
c) Will get a 4s tomorrow to try hands on.
This is really tricky to test, so I would try it yourself and not rely on reports of a "tester". When you get your 4s, if you do not see background notifications in 15 min of an iBeacon showing up, try hitting the shoulder button and verifying you get it right away.
If this does not help, I'd suggest:
Post your code that produces this problem so others can try.
Try to run the code in the github project referenced in my blog post here and see if that code triggers within 15 min.
If the code in (2) works, there might be an issue in how you are setting it up.

Resources