2016-07-08 2 views
2

У меня есть приложение ios, в котором я отправляю push с помощью apns. Мне нужно обработать push-сообщение, и если это правильно, покажите сообщение. Как я могу понять это быстро? Это мой код:Как обрабатывать push-уведомление в swift?

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

func registerForPushNotifications(application: UIApplication) { 
    let notificationSettings = UIUserNotificationSettings(
     forTypes: [.Badge, .Sound, .Alert], categories: nil) 
    application.registerUserNotificationSettings(notificationSettings) 
} 

func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) { 
    if notificationSettings.types != .None { 
     application.registerForRemoteNotifications() 
    } 
} 

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { 
    let tokenChars = UnsafePointer<CChar>(deviceToken.bytes) 
    var tokenString = "" 

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

    print("Device Token:", tokenString) 
} 

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { 
    print("Failed to register:", error) 
} 

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { 



} 

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) { 

} 

func applicationDidBecomeActive(application: UIApplication) { 
    UIApplication.sharedApplication().applicationIconBadgeNumber = 0 
} 

В какие функции я могу обрабатывать толчок уведомление там?

+2

Вы можете обработать уведомление в методе didReceiveRemoteNotification. С какими проблемами вы сталкиваетесь? –

+0

Я отправляю с push-идентификатором пользователя, и мне нужно проверить идентификатор пользователя, если он правильный userid Мне нужно показать push, если это не я не показываю push –

+0

Вы можете обработать нажатие вышеупомянутого метода и проверить параметры полученных в словаре. –

ответ

13

Чтобы обрабатывать push-уведомления при поступлении в приложение iOS, является сложной частью, чтобы в полной мере воспользоваться преимуществами.

Когда приходит толчок уведомление, ваше приложение может быть в

закрытого состояния - App убит, Рабочего состояния - App находится на переднем плане, взвешенное состояние - приложение в фоновом режиме,

Handle толчок уведомление, когда прибыл

Позволяет discuses один за другим, как обращаться с ними в каждом штате

закрытое состояние:

При закрытии приложения (некоторые другие приложения работают или телефон заблокирован), толчок уведомление прибыли и вы нажали на него, чтобы открыть приложение. Контроль будет выдаваться методу appDelegate’s, т. Е. didFinishLaunchingWithOptions: Обратите внимание, что когда вы обычно запускаете приложение, нажимая его значок с телефона. didFinishLaunchingWithOptions: называется первым с его launchOptions == nil. В случае, если вы запустите приложение, щелкнув полученные push-уведомления didFinishLaunchingWithOptions: вызывается с его launchOptions!=nil. Здесь приходит пункт Если вы хотите сделать что-то особенное, когда приложение запускается при нажатии нажимной уведомления вам необходимо добавить код в ваш didFinishLaunchingWithOptions:

как этот

if (launchOptions != nil) 
{ 
    //do some thing special e.g. display particular ViewController or Set some notification badge value. 
} 

Running состояние

Если ваше приложение работает (на переднем плане) и нажимает уведомление, на экране будет отображаться ничего, связанное с этим уведомлением - без предупреждения, без сообщения, без звука. Вместо того, чтобы следующий метод AppDelegate будет называться

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

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

Подвесной состояние

Если ваше приложение в фоновом режиме (телефон заблокирован или какое-либо другое приложение работает) и нажмите уведомление ПОЛУЧАЛО, уведомление будет отображаться со звуком и щелкать, что приложение уведомления будет запущенно с следующий метод appDelegate называется

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

Его то же самое, что вызывается при получении уведомления в рабочем состоянии. Обратите внимание, что вы всегда можете найти, если ваше приложение пробуждается из состояния фона в этом методе, используя свойство U12pplication applicationState.В этом случае вы можете сделать что-то особенное, когда приложение открывается из фона через push-уведомление.

+0

Можете ли вы объяснить подробно, пожалуйста? –

+0

@ beka.angsabay Downvote не является правильным способом. –

+0

i не было downvoted –

0

В соответствии с вашей проблемой,

Вы не переключение видимости уведомления, как только оно было получено на устройстве.

Этот вид функции/функциональности возможен только на Android. Как и при получении уведомления, разработчики Android могут решить, нужно ли отображать представление или нет.

Так что попробуйте управлять им со стороны сервера.

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