2016-08-02 2 views
3

Когда я отправляю push-уведомление, я получаю уведомление на устройстве, но оно не отображается в виде баннера в экране блокировки или в центре уведомлений на iPhone. У меня установлен iOS 9 на моем iPhone.Не показывать баннер только вибрационное устройство при получении push-уведомления

Следующий мой код.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
{ 
    registerForPushNotifications(application) 

    return true 
} 

func registerForPushNotifications(application: UIApplication) 
{ 

    let settings = UIUserNotificationSettings(forTypes: [.Sound, .Alert, .Badge], categories: nil) 

    UIApplication.sharedApplication().registerUserNotificationSettings(settings) 

    UIApplication.sharedApplication().registerForRemoteNotifications() 

} 

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) 
{ 
    print("DEVICE TOKEN = \(deviceToken)") 

    let tokenChars = UnsafePointer<CChar>(deviceToken.bytes) 
    var tokenString = "" 

    for i in 0..<deviceToken.length 
    { 
     tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]]) 
    } 

    print("tokenString: \(tokenString)") 
    strDeviceToken = tokenString 
} 

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) 
{ 
    print("Error = \(error)") 
} 

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]){ 
     print(userInfo) 
    } 
+0

Вы отметили стиль уведомления из настроек устройства. – Hasya

+0

Да, я проверял. –

+0

Добавить приложение func (приложение: UIApplication, didReceiveRemoteNotification userInfo: [NSObject: AnyObject], fetchCompletionHandler обработчик: (UIBackgroundFetchResult) -> Void), проверьте https://www.raywenderlich.com/123862/push-notifications-tutorial – Hasya

ответ

0

Убедитесь, ваше приложение в фоновом режиме, или закрыты, в противном случае Push Notification сообщения не будут видны на экране. Когда приложение запущено на переднем плане, iOS напрямую передает push Notification message в хост-приложение, не показывая его на главном экране или экране уведомлений.

Когда ваше приложение самой передней, UIKit обеспечивает локальное и удаленные уведомления прямо в приложении объект делегата без отображения любой системы пользовательского интерфейса. UIKit вызывает приложение : didReceiveLocalNotification: метод для входящих локальных уведомлений и приложение : didReceiveRemoteNotification: fetchCompletionHandler: метод для входящих удаленных уведомлений. Используйте обновленный словарь , чтобы соответственно обновить приложение. Поскольку приложение запущено, вы можете спокойно включать данные уведомления или обновить свой пользовательский интерфейс и сообщить пользователю, что доступна новая информация .

+0

Применение близко. я получил уведомление, но никаких предупреждений на экране не вибрирует только устройство. –

1

И наконец, я разрешаю эту проблему. их проблема с кодом php не в коде iOS. в php-коде они отсутствуют alert Ключевое слово в aps массив, который почему-то вибрирует только при получении уведомления.

+1

для меня это ключевое слово * body *. Он присутствовал, но имел пустую строку. Это, по-видимому, работает для iOS 11, но не для iOS 10. –

+0

@ gebirgsbärbel это также верно для push-функции Firebase. Для ios10 вам нужно поставить «тело», и оно не должно быть ниль или «». Для ios11 это не имеет значения. – protspace

Смежные вопросы