gpt4 book ai didi

ios - 如何在 didReceiveRemoteNotification 中获取 userInfo JSON 值

转载 作者:搜寻专家 更新时间:2023-10-31 08:05:00 25 4
gpt4 key购买 nike

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

if application.applicationState == UIApplicationState.Active
{
PFAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)

if let msg = userInfo["test"] as? Dictionary<String,AnyObject>
{
print(msg)
}
}

我的 userInfo["test"] JSON 值是:

> Printing description of userInfo:
▿ 3 elements
▿ [0] : 2 elements
- .0 : message
- .1 : 1235
▿ [1] : 2 elements
- .0 : aps
- .1 : 0 elements
▿ [2] : 2 elements
- .0 : link
- .1 :

我可以获取我的 userInfo 数据,但我不知道为什么我的 msg 没有任何值(value)(甚至没有 nil 只是没有显示)我怎样才能打印(消息)?

已更新

这是我的推送:

$this->parsepush->send( array( "channels" => ['test'], "data" => > $post_data ));

内部 $post_data 示例:

$post_data = json_encode(array ('link' => $link, 'message' => $message));\

我已经尝试过来自的说明,但我也无法进行简单的打印。

get Value from userInfo

编辑

仍然跳过了“aps”部分。

Picture 1

我的 JSON

这是我的 Json 看起来像:

> {  
"aps":{
"alert":{
"title":"$title",
"body":"$message"
},
"badge":"1"
},
"adira":{
"link":"$link"
}
}

这是我的代码:

>   func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
// PFPush.handlePush(userInfo)
// PFAnalytics.trackAppOpenedWithRemoteNotificationPayload(userInfo)
if let msg = userInfo["message"] as? String {
print(msg)
print("a")
}
if let alertDict = userInfo["aps"]?["alert"] as? Dictionary<String, String> {
print("title : ", alertDict["title"])
print("body :", alertDict["body"]!)
print("badge: ", alertDict["badge"]!)
print("b")
}
if let link = userInfo["link"] as? String {
print(link)
print("c")
}
}
}

但我仍然无法获取我的aps 数据。仍然是零或什么都没有。

如果你想要一个特定的代码,只需点击下面的链接:

Full code AppDelegate.swift

编辑 2

我直接使用 print(userInfo) 打印输出是:

Object has been saved. [message: iOS push, aps: { }, link: ]

更新 2

我试图从 parse.com 推送,而不是我的网站(第 3 方)。这是我从普通打印(userInfo)中得到的

> [aps: {
alert = 12345abc;
sound = default;
}]

所以我想我只是改变并在我的 JSON 中添加一些东西从我的网站到:

[aps:{
alert = $message;
sound = default;
link = $link;
}]

类似的东西?

最佳答案

如评论中所述,APNS payload中没有 key test
如果键 message 的值保证始终发送,您可以轻松解包该值

let msg = userInfo["message"] as! String
print(msg)

否则使用可选绑定(bind)

if let msg = userInfo["message"] as? String {
print(msg)
}

要从 aps 键获取 alert 字典并打印例如 body 字符串使用

if let aps = userInfo["aps"] as? [String:Any],
let alertDict = aps["alert"] as? [String:String] {
print("body :", alertDict["body"]!)
}

关于ios - 如何在 didReceiveRemoteNotification 中获取 userInfo JSON 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34399848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com