iOS:使用push来运行方法而不显示通知

时间:2015-07-19 10:27:34

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

是否可以在iOS中从服务器获取推送然后运行方法而不显示通知?例如,要检查现在是否是配置的时间,是否要显示通知,如果不是要向服务器发送不可用的消息。

2 个答案:

答案 0 :(得分:1)

是的,你要找的是silent push notification得到introduced in iOS 7。看一下docs regarding push notifications哪个州:

  

aps词典还可以包含content-available属性。值content-available的{​​{1}}属性允许远程通知充当“静默”通知。当无声通知到达时,iOS会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行后台信息处理。用户不会被告知由静默通知产生的新信息或更改信息,但他们可以在下次打开您的应用时找到相关信息。

  

1 -   content-available -   为此键提供值1以指示新内容可用。包含此键和值意味着当您的应用在后台启动或恢复时,会调用number。   (报亭应用程序保证每24小时窗口至少能够使用此密钥进行一次推送。)

然后你可以做出相应的反应并最终实际触发另一个通知,如果你觉得用户需要被告知某事(尽管不是100%确定那个)。

可以找到更加深入的信息和代码in this objc.io post

答案 1 :(得分:0)

是的,可能

  • 实施didReceiveRemoteNotification:fetchCompletionHandler

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

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

    enter image description here

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

      

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

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

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

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

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