ShopKick sound detection on iPhone - iphone

Is anyone aware of how ShopKick iPhone app is able to continuously record sounds (and process them) while running in the background?

Related

Multipeer Connectivity audio streaming stop work on background

I'm doing some audio streaming with iOS 7's Multipeer Connectivity framework. The streaming works well, but when I put the app on background it stops working.
Someone can tell me if this is a framework limitation, or I'm doing something wrong?
And, if it is a framework limitation, is it possible to do something to avoid this?
Can I use Background Tasks, to keep streaming and music working on background?
Is possible do this? If is not possible, do any alternatives exist for MultiPeer audio streaming between iOS devices?.
I´m using this example: https://github.com/tonyd256/TDAudioStreamer.
Explained on this page: http://robots.thoughtbot.com/streaming-audio-to-multiple-listeners-via-ios-multipeer-connectivity.
Thanks a lot!
On the Apple documentation for playing audio in the background (scroll down a bit). Some relevant paragraphs:
When the UIBackgroundModes key contains the audio value, the system’s media frameworks automatically prevent the corresponding app from being suspended when it moves to the background. As long as it is playing audio or video content or recording audio content, the app continues to run in the background. However, if recording or playback stops, the system suspends the app.
You can use any of the system audio frameworks to work with background audio content, and the process for using those frameworks is unchanged.
This means that iOS should recognize that you're playing audio through Core Audio, and keep your app unsuspended, as long as you've correctly configured your app for playing audio in the background.
Because your app is not suspended while playing media files, callbacks operate normally while your app is in the background. In your callbacks, though, you should do only the work necessary to provide data for playback. For example, a streaming audio app would need to download the music stream data from its server and push the current audio samples out for playback. Apps should not perform any extraneous tasks that are unrelated to playback.
You should be able to operate normally as long as your app is still playing audio, and is allowed to do what it needs to in order to continue playing audio. This means that you should be able to continue to use MPC in the background to receive the audio data and play it.
Be sure to read the entire documentation on the subject, especially regarding Audio Sessions.
iOS devices get limited cpu cycles for explicit purposes when they have been backgrounded by the user.
According to Apple's documentation on multitasking and execution in the background, the following types of apps are supported, but have to be explicitly declared:
Apps that play audible content to the user while in the background, such as a music player app
Apps that record audio content while in the background.
Apps that keep users informed of their location at all times, such as a navigation app
Apps that support Voice over Internet Protocol (VoIP)
Apps that need to download and process new content regularly
Apps that receive regular updates from external accessories
Your case falls under Apps that play audible content to the user while in the background, such as a music player app. You can find more information from the link provided above.

iOS output stream music in background

to cut story short Im developing an app thats like Sonos. That is, Im trying to stream music from the iPod library to a hardware over wifi. Hence the sound will come out of a hardware that is connected to the iPhone by wifi.
Doing this is easy enough when the app is foreground but in the background the app will be terminated. It is different when outputting the audio in the background in the iPhone device itself.
Also I notice that Sonos supports this feature only for iOS 6 so I wonder if theres some new magical API that allows this.
I hope any of you gurus can guide me to the right path.

iOS: Play/Stop music in Background at a specific time

I am developing an app which can stop or play a music from iPod or other audio at a specific time even if is in background. Is it possible?
I know that with a local notification can play an audio during 30 seconds, but I need more time. There are application which can do this like TuneIn Radio.
Thank you very much in advance!
Unless it is your app that is playing the music in the background I don't think it is going to be possible. The hardest part is the fact that you can't run an app in the background unless it is playsound, keeping track of the users location or is a voip client.
You can use a local notification, but the allarm sound is restricted to the 30 seconds and you can only stop any audio session if you app gets launched.

How to play a sound while running in the background?

I need to be able to play a sound while running the application in the background.
I tried with UILocalNotifications but the file needs to be part of the bundle, and that will not be the case, as I need to generate the sound files on the fly...
So is there any way that I can play a sound while running in the background?
Thanks.
You can't, unless you continuously play audio and have the appropriate audio session category set for your app... then your app doesn't go to sleep, it continues to run (again so long as audio is playing).
This is part of the design limitations of iOS multitasking.
Apple has allowed people to get away with having a continuously looping blank audio file (AVAudioPlayer loop = -1 with a 1-sec blank CAF file) if the app is primarily audio related and it is obvious to the user that this has battery life implications (and can be disabled by the user), but YMMV... you app can also be rejected for this.

How to control wether or not my app will stop any iPod music playing?

When my app launches, there are rumors that I can decide if any currently playing music is stopped or not.
My goal is to use Audio Queue Services, because I believe that's the most powerful audio technology in iPhone OS.
So, could I really decide that when my app launches? How? Which one of the many audio technologies on the iPhone OS is responsible for managing this?
See the class MPMusicPlayerController and the class method +iPodMusicPlayer