2016-08-01 2 views
1

Я использую Cordova и плагин phonegap-plugin-push, Когда мое приложение находится на переднем плане, я не вижу предупреждения. Что мне нужно делать? (Я знаю, как это сделать на платформе Android (установка «forceShow»: true в методе init PushNotification), но это работает только для Android) Благодарим вас за ваши ответы.Уведомление о кордове iOS не работает на переднем плане

+0

Спасибо всем ! Я решил использовать метод push.finish() плагина cordova, и теперь отображается баннер, но когда он исчезает, уведомление не хранится в списке уведомлений для чтения устройства, и это проблема! Любые идеи для его решения? – Denise

ответ

0

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]; 
    }  
} 

Это поможет вам решить вашу проблему.

+0

Благодарим вас за ответ! Но я использую Кордову, вы знаете, если это способ сделать это в кордове, изменяющей javascript? – Denise

+0

Его безопасный путь @Denise. Вы можете использовать его свободно и не вызывать отклонения приложения. Cheers – Sabby

0

В iOS, если ваше приложение находится на переднем плане, предупреждение push-уведомления не будет отображаться. Чтобы достичь этого, вы должны написать код для оповещения в делегате приема push-уведомления, если ваше приложение находится на переднем плане. Чтобы узнать состояние приложения в iOS, это код.

+(BOOL) runningInForeground 
{ 
UIApplicationState state = [UIApplication sharedApplication].applicationState; 

return state == UIApplicationStateActive; 

} 
+0

@iamgam благодарит вас за ответ! Но я использую Кордову, вы знаете, если это способ сделать это в кордове, изменяющей javascript, или это возможно только с помощью собственного кода? – Denise

+0

@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); } } ' –

+0

Если это вам поможет, пожалуйста, голосуйте и принимайте ответ. –

1

Если и не хочу трогать 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 
}); 
+0

Спасибо! Я решил аналогичным образом использовать метод push.finish(), и теперь отображается баннер, но когда он исчезает, уведомление не хранится в списке уведомлений для чтения устройства, и это проблема! Любые идеи для его решения? – Denise

+0

Я не понимаю вашу новую проблему должным образом. Но я хотел бы дать дополнительную информацию, которая может вам помочь. 1. Прежде всего этот баннер будет частью вашего веб-представления приложения, поэтому он никогда не будет храниться в списке собственных уведомлений в центре уведомлений. 2. Когда баннер исчезнет, ​​он больше не будет частью вашего приложения. 3. Вместо баннера вы можете отображать локальное уведомление, также используя ** cordova-plugin-local-уведомления ** –