2016-12-12 65 views
0

我在推送通知委託內部定義了以下函數。我必須使用正則表達式來提取消息還是有屬性?

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

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

只要我的應用程序收到推送通知,就會調用此函數。 userInfo的description屬性包含推送消息,它的格式如下:「[aps:{\ n alert =; \ n}]」。我想知道什麼是最好的方式來獲取消息的一部分。我可以使用正則表達式來提取消息部分,但我不確定該消息的模式。那是一種正確的方式嗎?我在想如果有一個函數返回乾淨的消息。

回答

0

aps的格式是JSON。您需要將「userInfo」序列化爲JSON格式。對於這一點,你可以像使用SwiftyJSON一個框架:

let json = JSON(userInfo) 

現在,您可以訪問APS像

print(json["aps"]) 

你可以用標準的功能(包括在斯威夫特),但是,你需要初始化你的JSON先將用戶信息轉換爲數據。

+0

謝謝。整合之後,我得到了「使用更新版本的Swift語言(3.0)編譯而不是以前的文件(2.0)」的架構armv7「。可能是因爲我的項目使用舊版本的swift 2.3並且該庫是使用Swift 3構建的。我無法升級我的項目,因爲Amazon Web Service框架在Swift 2中,並且升級會打破一切。 – user30646

+0

您可以使用默認函數來序列化JSON –