是否可以在旁边的推送通知中传输任何"badge"
"sound"
信息"text"
?
例如,在应用程序中"whatsapp"
,当出现并按下推送通知时,应用程序会打开但不会进入对话。我的猜测是它不知道要进行什么对话。但后来我在 facebook messenger 应用程序中看到它实际上进入了对话。信使应用程序如何知道要进行什么对话?
另外,如果可以传输信息,为什么像whatsapp
这样的应用程序不使用它并且还询问您的姓名以便在推送中显示?
是否可以在旁边的推送通知中传输任何"badge"
"sound"
信息"text"
?
例如,在应用程序中"whatsapp"
,当出现并按下推送通知时,应用程序会打开但不会进入对话。我的猜测是它不知道要进行什么对话。但后来我在 facebook messenger 应用程序中看到它实际上进入了对话。信使应用程序如何知道要进行什么对话?
另外,如果可以传输信息,为什么像whatsapp
这样的应用程序不使用它并且还询问您的姓名以便在推送中显示?
确实是的。但是您的消息大小(以字节为单位)不得超过 Apple 规定的某个阈值。然后,您可以使用以下方式提取该信息- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
:
NSDictionary* dictionary = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
字典包含您的推送通知信息的位置。
有些应用程序有权在后台运行,而其他应用程序则没有。可能是 facebook messenger 应用程序拥有此权限,并且可以接收推送通知并执行所需的任何操作以转到正确的对话或用户。我不知道这是不是真的,但这可能是一个可能的原因。
在这种方法中,我们可以根据我们的应用程序显示推送通知警报及其操作
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSLog(@"did receive remore notification %@",userInfo);
if(isForground)
{
}
}
您应该查看此文档部分JSON 有效负载示例
在底部,您可以看到自定义有效负载示例,例如:
{
"aps" : {
"alert" : "You got your emails.",
"badge" : 9,
"sound" : "bingbong.aiff"
},
"acme1" : "bar",
"acme2" : 42
}
您可以将自定义数据传递给推送通知并在启动后将其放入您的应用程序acme1
中。acme2
数据可通过 UIApplicationDelegate 回调获得,如此处所述处理本地和远程通知
您可以在有效负载中添加更多参数。在我们的应用程序中,我们添加类似 groupID 或类型的内容。请参阅此堆栈溢出以添加更多有效负载参数
确保消息大小不超过256字节。这是有效负载的阈值限制