在android中,我们可以在推送通知有效载荷中的条件(数据)上动态地发出推送通知的警报消息。即推送来时会执行一段代码,然后显示警报。
我们不能在ios中这样做吗?我们是否需要始终从API发送警报消息?我们不能在客户端(ios)更改它?
答案 0 :(得分:0)
事实上,你可以。你只需要发送一个"沉默"远程通知,处理应用程序中的通知并根据有效负载显示本地通知。步骤是:
请务必注册远程通知,请参阅documentation here:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
return YES;
}
还要确保编辑Info.plist
并检查"启用后台模式"和#34;远程通知"复选框:
此外,您需要将"content-available":"1"
添加到推送通知有效内容中,否则如果该应用在后台,则不会被唤醒(请参阅documentation here) :
对于触发下载操作的推送通知, 通知的有效负载必须包含内容可用密钥及其 值设置为1.当该键存在时,系统将应用程序唤醒 背景(或将其启动到后台)并调用应用程序 委托的 应用:didReceiveRemoteNotification:fetchCompletionHandler: 方法。您应该下载该方法的实现 相关内容并将其集成到您的应用中
所以有效载荷至少应该是这样的:
{
aps = {
"content-available" : 1,
sound : ""
};
}
只需将声音属性留空并省略alert / text属性,您的通知就会无声。
不幸的是,该应用程序不会被唤醒,如果它根本没有运行(强制退出),请参阅this answer。