Since upgrading to xCode 6 and iOS 8 I've noticed serious issues with AVSpeechSynthesizer. Prior to the upgrade, it worked perfectly, but now, several issues have risen.
Speech Utterances are playing at a much faster rate then how they were prior to upgrade.
When I queue up 2 speech utterances, it simply skips over the first utterance and plays the second one first. (This only occurs on the first run of the speech synthesizer. The second run and on works properly.)
Please, any help would be greatly appreciated. Thanks in advance.
For second issue, see this answer for AVSpeechUtterance - Swift - initializing with a phrase.
As for me - iOS 8 also did not support properly languages other than phone language + english.
upd dec-2014: XCode 6.2 beta2 did resolve issues with TTS in simulator and (maybe) with TTS rate.
It looks to me as though a user can only hear the voice if they have specifically downloaded it in their accessibility settings.
What I have not been able to do is work out how to tell which voices they have downloaded.
I have discovered a horrible hack to make voices that have not been specifically downloaded play.
To do so I had to have two synthesizers running and get one to run through all the voices saying something. Then the other synthesizer could use any of the voices. As I say, this is a horrible hack and I cannot guarantee its reliability. In addition, it may stop working at a future varsion of ios8.
In my own apps I have chosen to make a library and get it to cycle through all the voices. Where they take more than zero time to say a phrase, they are a "good" voice and I offer it to the user. This has the advantage that it is likely to be robust against changes in the ios version.
Related
Situation
I have a component playing audio in my nativescript app (recently updated to ns 7). Since the app should continue to play audio when it is in the background or the device is locked, I need a way to control the audio. iOS comes with the NowPlayingView.
Problem
Since I can not find a link to this feature in the Nativescript Documentation or a ns plugin for that, I am wondering if and how I could use that feature in my app. I did not yet dig into the "native-land" and was primarly using nativescripts own features. So I do not have any first steps that guide me in the right direction to implement such a feature, if possible at all.
Question
Maybe you could help me with some rough tipps or even some code snippets, if you have already implemented the NowPlayingView?
I am trying to use allowDeferredLocationUpdates(untilTraveled:timeout:) to defer the location updates. The documentation followed is https://developer.apple.com/documentation/corelocation/cllocationmanager/1620547-allowdeferredlocationupdates.
Even though by trying various ways to detach the phone from debugger, keeping phone idle for longer duration the Deferring is not working. Please advice if someone has tried this on iOS 11.
Unfortunatly, despite of all documentation and after weeks of frustrating development effort, I excepted the fact, that this functionality is not supported anymore. I tested it in all possible situations on 7 different real devices (iPads and iPhones, 5s up to 7) ... no success.
It did work perfectly on IOS 9, this is why I trust, that I know how to do it. But I tried every hint I found here and elsewere... no success under IOS 10 and 11.
If you look around you will find numerous angry comments from other coder. It‘s a shame, but we have to except the facts.
There are previous topics about waking up an application from the background with BLE advertisement (e.g. How to wake up iOS app with bluetooth signal (BLE), Android / iOS - BLE - wake up a terminated application when a BLE device connects).
However my question is not about that since we had this feature working fine up to iOS 9.2 included.
Coming iOS 9.3 the feature doesn't work as it used to work before, it seems that the terminated by user swiping off the application is not woken up. Nothing changed on the BLE advertisement originator.
After a recheck of various parameters and reading of Apple documentation, nothing springs to our minds. Neither Apple documentation mention any change, unless we missed something.
Have other people notice this issue? Are you aware of a solution?
We wrote to Apple and we are pending on an answer but maybe somebody here has the correct tip.
Many thanks in advance for the attention.
UPDATE: After more testing, it seems that only when the user swipes the application out the wake up doesn't work like it used to in iOS 9.2
Initial testing were more manual and gave us the impression that there was an underlying issue. However not sure why this change took place without any notification from Apple. - Above text was amended based on the update -
UPDATE 2: This issue is not present anymore in iOS 10.
It turns out after a reply from Apple that this is a (new) intended behaviour.
didEnterRegion/didExitRegion events stopped working from the background after update to 9.3
I have an app that has been working almost perfectly for the last 6 months, and after the update these events are no longer getting called. I started this app over last year when I heard about iOS9 coming out, and when I couldn't get the old one working, I started a new one using Swift instead.
After some time and a LOT of driving in and out of my Region, I got the app to work more reliably than it ever had before. I have several devices using the app, and when all of them updated to iOS9.3/9.3.1, the app stopped calling didEnterRegion/didExitRegion events completely.
I have a ticket open with Apple, but I am getting a lot of push back about the service, and that 9.3 didn't change background location at all.
My devices use AT&T of Verizon, we have tried wi-fi assist on and off, I even wiped a system, formatted the HD, installed El Capitan, and XCode 7.3, and it's hasn't helped.
I also found an issue with the Devices Tool, and when you download the Container, and open package, the Documents folder is empty. I'm not getting a warm fuzzy feeling for Apple right now, and I am sure someone is feeling my MEGA MIND WEDGIE at this moment.
Help....
Is anyone else unable to use the AVSpeechSynthesizer with a voice other than "en-US"? The array that gets returned when I call AVSpeechSynthesisVoice speechVoices still returns the complete list that can be seen in iOS 7, but none of them actually work.
I tried looking through the known issues on the iOS 8 release notes, but didn't see anything about this. Hopefully this is something that will be fixed in the full version, as I have a couple apps that make use of multiple voices.
IMHO, this is a bug in iOS8, even for GM.
I was playing with this project: https://github.com/mattt/AVSpeechSynthesizer-Example
My findings are:
1) iOS 8 did not speak in any simulator (XCode 6GM, XCode 6.1b2). It did speak only on real device.
2 ) iOS 8 did speak in language of phone (Russian in my case) and English (en-US). When i did change Language of a phone to german, i can hear German and English TTS. Adding German as one of languages in preffered language list did not help, you should set language as phone language. For unknow reasons Russian did work even if it was not phone language, but not same for German - it was working only if it was set as a phone language. Maybe real location matters (I am in Russia). For sure: iOS8 did "optimize" TTS engines some way, so not all of them are ok to use.
3) some folks noticed another bug in iOS 8: first attempt to use AVSpeechSynthesizer produces silence. See workaround here.
This problem appears to have been fixed in iOS 8.1.
I have an app I have written for IOS3, but I want to polish it up for IOS4. What do I have to do differently (or in addition). I have noticed that every one in a great while, it will crash on the hardware at startup, but I haven't yet gotten a good debug session while it does it. I am hoping that the info received here will help me solve that problem also. (Note that I didn't have the crashes pre-IOS4.)
Thanks
Really, there isn't much that is required. If your build is clean of warnings and you have implemented applicationWillResignActive to save all your data you should be fine with iOS 4 and the multi-tasking features added. Supporting anything else isn't required to run on iOS 4...