Я использую Cordova и плагин phonegap-plugin-push, Когда мое приложение находится на переднем плане, я не вижу предупреждения. Что мне нужно делать? (Я знаю, как это сделать на платформе Android (установка «forceShow»: true в методе init PushNotification), но это работает только для Android) Благодарим вас за ваши ответы.Уведомление о кордове iOS не работает на переднем плане
ответ
Denise,
Уведомление не работает на переднем плане. Он работает только в фоновом режиме. Обработайте его на переднем плане, вам нужно реализовать логику в методе делегата. Ниже приведен фрагмент кода Objective C для отображения уведомлений на переднем плане.
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
application.applicationIconBadgeNumber = 0;
//self.textView.text = [userInfo description];
// We can determine whether an application is launched as a result of the user tapping the action
// button or whether the notification was delivered to the already-running application by examining
// the application state.
if (application.applicationState == UIApplicationStateActive)
{
// Nothing to do if applicationState is Inactive, the iOS already displayed an alert view.
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Did receive a Remote Notification" message:[NSString stringWithFormat:@"Your App name received this notification while it was running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}
Это поможет вам решить вашу проблему.
В iOS, если ваше приложение находится на переднем плане, предупреждение push-уведомления не будет отображаться. Чтобы достичь этого, вы должны написать код для оповещения в делегате приема push-уведомления, если ваше приложение находится на переднем плане. Чтобы узнать состояние приложения в iOS, это код.
+(BOOL) runningInForeground
{
UIApplicationState state = [UIApplication sharedApplication].applicationState;
return state == UIApplicationStateActive;
}
@iamgam благодарит вас за ответ! Но я использую Кордову, вы знаете, если это способ сделать это в кордове, изменяющей javascript, или это возможно только с помощью собственного кода? – Denise
@Denise, пожалуйста, прочитайте это [ссылка] (https://github.com/phonegap-build/PushPlugin) «// IOS функция onNotificationAPN (событие) { если (event.alert) { navigator.notification. оповещения (event.alert); } if (event.sound) { var snd = new Media (event.sound); snd.play(); } if (event.badge) { pushNotification.setApplicationIconBadgeNumber (successHandler, errorHandler, event.badge); } } ' –
Если это вам поможет, пожалуйста, голосуйте и принимайте ответ. –
Если и не хочу трогать Ios родные вещи, то вы можете показать свой собственный custmize HTML/CSS Баннер (как IOS нажать банер) в следующем методе:
push.on('notification', function(data) {
If(platform == "iOS" && data.additionalData.foreground){
// Show your Baner here
// U can also define call back on clicking of that banner
//Like navigation to respective page or close that banner
});
Спасибо! Я решил аналогичным образом использовать метод push.finish(), и теперь отображается баннер, но когда он исчезает, уведомление не хранится в списке уведомлений для чтения устройства, и это проблема! Любые идеи для его решения? – Denise
Я не понимаю вашу новую проблему должным образом. Но я хотел бы дать дополнительную информацию, которая может вам помочь. 1. Прежде всего этот баннер будет частью вашего веб-представления приложения, поэтому он никогда не будет храниться в списке собственных уведомлений в центре уведомлений. 2. Когда баннер исчезнет, он больше не будет частью вашего приложения. 3. Вместо баннера вы можете отображать локальное уведомление, также используя ** cordova-plugin-local-уведомления ** –
Спасибо всем ! Я решил использовать метод push.finish() плагина cordova, и теперь отображается баннер, но когда он исчезает, уведомление не хранится в списке уведомлений для чтения устройства, и это проблема! Любые идеи для его решения? – Denise