Sometimes Notifications cause iOS screen to just wake up - ios

That's really weird problem..my notifications is working perfectly but in very random and rare cases, the screen just is woken up but no notification appears.
Although I'm using native Swift, it seems it's a common problem
IOS Push notification - Sometimes only wakes screen and plays sound
Do you have any suggestions?

If you have a line of code that reduces the application badge number when a notification is received, make sure that this line doesn't get called when app state is not "Active".

Related

How to make an iOS VoIP app obey Do Not Disturb when ringing?

One would think it would be essential for a VoIP app to obey the same rules as the stock phone app but it turns out to be almost impossible to implement ringing correctly. Several things I tried:
Local push notifications with ring sound.
Good: obeys both Silent and DND modes.
Bad: the sound can be no longer than 30 seconds, and it only vibrates once when the notification appears. So to achieve the ringing effect the notification has to be re-pushed e.g. every 6 seconds, effectively spamming the notification center. Also push notifications do not sound/vibrate if the app is active so the app has to detect that and ring differently.
AudioServicesPlayAlertSound().
Good: proper API seemingly designed specifically for this task. Obeys silent mode.
Bad: completely ignores Do Not Disturb mode, the sound and vibration come right through.
Use AVFoundation to play the ring sound.
Good the sound plays.
Bad: does not support vibration, does not support silent/DND modes. Essentially not usable as a ringer.
Is there a better way? Or did Apple completely miss this use case?
As you say in your 3 options, only a UILocalNotification actually obeys silent/DND mode.
The problems with it can be solved.
Spamming the notification center: I think that works quite well. You can cancel your previous notification immediately before you fire off a new one, so there will always be only 1 outstanding notification.
[[UIApplication sharedApplication] cancelAllLocalNotifications];
Vibration problem: You should be able to call this: AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); in the same place where you call your local notification over and over again with a timer until the call ends or the users acknowledges the call. With the VOIP background setting on it should work in the background.
As you stated in option 2 the vibrate will not follow DND mode, but it's just vibration. If you spam the notification center that will vibrate once every time the notification comes in so you may not need to explicitly start vibrating if that's enough for you.
Good luck.

Not receiving background fetch remote notifications while application is backgrounded, and user does not enter through push notification

My application currently uses the application:didReceiveRemoteNotification:fetchCompletionHandler and application:didFinishLaunchingWithOptions: delegate methods to handle background remote notifications. Intermittently, a push notification will appear, and I will not receive a log that says that it has called either of my application delegate methods. I have tested for suspended, active, background, and suspended states, and they all seem to be working correctly. About 1 in every 30 pushes I get a 'dead' push notification.
****NOTE: This case only happens when I do NOT enter by touching the push notification, and happens unpredictably.**
The error came from an iOS 8 "feature" in Apple's docs. If an iPhone has less than great cellular or wifi signal, low battery, or is not plugged into a charger, the phone will receive the notification on the lock screen, but will not launch the app into a suspended state. Therefore, background events such as application:didReceiveRemoteNotification:fetchCompletionHandler will not be fired IF you do not enter directly into the application by swiping the notification itself.
This was offset in testing by the fact that the device was always plugged into my development machine during debugging with a strong wifi signal, so I would never be put into a bad state.
This is extremely specific, but crucial if your app relies heavily on push notifications for background functionality.

UILocalNotification not firing properly on iPhone when app not foregrounded

UPDATE - a warning to anyone with similar symptoms... check Do Not Disturb is not active!
I finally paid to get an app I was working on running on my iPhone instead of on the simulator.
Having done so I've spotted a strange behaviour with regards to the UILocalNotifications that I create, which are set to use the default sound UILocalNotificationDefaultSoundName, and the default timezone ([NSTimeZone defaultTimeZone]).
If the app is foregrounded then the local notification fires on time and I receive it within
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
and I create an alert view to display it.
If however I lock my phone just before a notification is expected then nothing appears on the screen, but when I press the home button to show the lock screen I can see my app's notification in the notification centre on the lock screen. No sound was played, but then again the phone didn't wake up to show the notification properly.
If however I just press the home button so the app is put in the background leaving me looking at the springboard apps then I don't see any notifications whatsoever, and again no sound is heard.
On the simulator the same code correctly fires the notification banner when looking at the app icons in the spring board, although I've never been able to hear any sounds for the notification. But as the simulator doesn't let you configure the notification centre for apps I always presumed it was perhaps set to not allow sounds. On my device sounds for this apps notifications are enabled, and i've tried it with banner and alert modes, with no joy. Very frustrating.
Has anyone experienced this, or have an idea what could be going on?
Oh the irony of this answer.. think it's time to go to bed. My iPhone thinks that too for nearly 3 hours now... My question happily describes Do Not Disturbs behaviour, which was active.. Sorry to waste everyones time!!

iOS Push Notifications - Show in Top Bar When Phone isn't locked

How can I make my push notification alert for my app show in a top rectangle on the phone when it's not locked. Right now I only see it on the locked screen.
Thanks
You are looking for a way to display push notifications when you app is running and in the foreground? That is, you want notifications that are received while your app is running to look just like notifications that are received when your app is not running? Unfortunately, iOS has no support for this. When your app is in the foreground, it is notified via [UIApplicationDelegate application:didReceiveRemoteNotification:] when a notification is received, but nothing is displayed. You'll have to write your own UI code to display a banner at the top of the screen when this method is called.

ios7 didreceiveremotenotification not called when screen is locked

I'm having a trouble to get the information from push notification and it only happens on iOS7, I have tested on iOS5 and iOS6, the function works perfectly fine. Here is the scenario: I have a game playing between 2 iPhones and it's a turn-base game, in every move, there will be a push notification sent to each competitor announce that the other one has made the move and now is your turn.
The problem is, when I lock my iPhone (turn off the screen) and the other made the move, there IS the push on my iPhone, and I slide to unlock, obviously the app appear but the 'didreceiveremotenotification' has not been invoked.
It's weird that only happens on iOS7. I know there are only 3 states that the application will get the push notification supspended/background/foreground. what state is the lockscreen? Any helps would be great and sorry for my English, if I didn't make it clear, please leave the comment, I will explain more.

Resources