2016-12-12 5 views
0

У меня есть функция, определенная внутри делегата push-уведомления.Должен ли я использовать регулярное выражение для извлечения сообщения или есть свойство?

func pushManager(pushManager: AWSPushManager, didReceivePushNotification userInfo: [NSObject : AnyObject]) { 

    print("Received a Push Notification: \(userInfo.description)") 
    let x = userInfo.description 
} 

Эта функция вызывается всякий раз, когда мое приложение получает push-уведомление. Свойство description userInfo содержит push-сообщение, и оно находится в этом формате: «[aps: {\ n alert =; \ n}]". Мне интересно, как лучше всего получить часть сообщения. Я мог бы использовать регулярное выражение для извлечения части сообщения, но я не уверен в шаблоне, который связывает сообщение. Это даже правильный способ? Я думаю, если есть функция, которая возвращает чистое сообщение.

ответ

0

Формат aps - JSON. Вам необходимо сериализовать «userInfo» в формате JSON. Для этого вы можете использовать рамки как SwiftyJSON:

let json = JSON(userInfo) 

Теперь вы можете получить доступ к APS так

print(json["aps"]) 

Вы можете инициализировать JSON со стандартной функции (входит в комплект Swift), однако, вам нужно сначала конвертировать информацию пользователя в данные.

+0

Спасибо. После интеграции я получаю «скомпилированный с более новой версией языка Swift (3.0), чем предыдущие файлы (2.0) для архитектуры armv7». Вероятно, потому, что мой проект использует более старую версию swift 2.3, а библиотека построена с помощью Swift 3. Я не могу обновить свой проект, так как инфраструктура Amazon Web Service находится в Swift 2, и обновление сломает все. – user30646

+0

Вы можете использовать функцию по умолчанию для сериализации JSON –