在ios

时间:2015-07-04 06:30:42

标签: ios push-notification apple-push-notifications payload

在android中,我们可以在推送通知有效载荷中的条件(数据)上动态地发出推送通知的警报消息。即推送来时会执行一段代码,然后显示警报。

我们不能在ios中这样做吗?我们是否需要始终从API发送警报消息?我们不能在客户端(ios)更改它?

1 个答案:

答案 0 :(得分:0)

事实上,你可以。你只需要发送一个"沉默"远程通知,处理应用程序中的通知并根据有效负载显示本地通知。步骤是:

  • 实施didReceiveRemoteNotification:fetchCompletionHandler

  • 请务必注册远程通知,请参阅documentation here

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {    
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
    
        return YES;
    }
    
  • 还要确保编辑Info.plist并检查"启用后台模式"和#34;远程通知"复选框:

    enter image description here

  • 此外,您需要将"content-available":"1"添加到推送通知有效内容中,否则如果该应用在后台,则不会被唤醒(请参阅documentation here) :

      

    对于触发下载操作的推送通知,   通知的有效负载必须包含内容可用密钥及其   值设置为1.当该键存在时,系统将应用程序唤醒   背景(或将其启动到后台)并调用应用程序   委托的   应用:didReceiveRemoteNotification:fetchCompletionHandler:   方法。您应该下载该方法的实现   相关内容并将其集成到您的应用中

    所以有效载荷至少应该是这样的:

    {
        aps = {
            "content-available" : 1,
            sound : ""
        };
    }
    

只需将声音属性留空并省略alert / text属性,您的通知就会无声

不幸的是,该应用程序不会被唤醒,如果它根本没有运行(强制退出),请参阅this answer