iOS推送服务:是否可以进行无形推送通知?

Tie*_*eme 19 notifications push ios

我正在构建一个依赖在线数据库数据的iPhone应用程序.

要更新应用程序中的数据,我可以在某个时间间隔检查是否需要更新,但如果我可以使用推送服务向应用程序发送通知,让它知道是时候进行更新,那就更酷了.

我不是在这里谈论可见的推送通知,只是一个不可见的推送通知来触发我的应用程序中的更新方法.

有没有一种标准的方法可以做到这一点,还是我可以使用苹果的推送通知服务?

换句话说:我现在正在使用pull获取更新,是否有推动方式让我的应用程序的后端知道是时候进行更新了?

编辑:如果不可能,更新的时间间隔是多少(如果没有更新,则为0.03 kb).是否每30秒检查一次?

小智 29

Apple在线图书馆中有一个很好解释的文档.

使用Apple推送通知服务(APNS),您可以获得以下任意组合:

  • 要显示给用户的警报消息
  • 用于标记应用程序图标的编号
  • 一个声音播放

当我说任何我的意思是没有警报,没有徽章和没有声音也是可能的.即使应用程序已关闭(但至少执行一次,注册到通知服务中),远程通知也可用,iOS负责管理推送并唤醒您的应用程序.

如果你想使用APNS,你需要

  • 一个Web服务器(将生成推送)
  • 来自Web服务器的CSR
  • 信任您的服务器的苹果证书(这是CSR的原因)
  • 具有为通知配置的App ID的iOS应用程序

所有与CSR相关并信任您的服务器的内容都在iOS配置门户,"应用程序ID"部分,"如何"选项卡中详细说明.试试这个链接.

在您的Web服务器中,必须托管将执行以下两个操作的APNS提供程序:

  • 在具体的iOS设备上注册标识具体安装的令牌.此令牌是为Apple APNS生成的,将由您的应用程序发送给提供商. 在此输入图像描述

  • 生成推送通知:将从您的提供商发送到Apple APNS,Apple APNS将发送到您的应用程序(带有警报和/或徽章和/或声音和/或静音模式) 在此输入图像描述

APNS通知将使用远程通知系统发送到您的应用程序.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
Run Code Online (Sandbox Code Playgroud)

您可以查看Easy APNS App Delegate

作为提供者,您可以使用自己开发的,或者您可以使用/修改任何已经可下载的人

所以答案是肯定的,这是可能的.使用Easy APNS esamples,推送生成必须如下所示:

$apns->newMessage(1);
$apns->addMessageCustom('acme2', array('bang', 'whiz'));
$apns->queueMessage();
Run Code Online (Sandbox Code Playgroud)


ste*_*mit 5

是的,iOS 7+可以实现

如果覆盖UIApplicationDelegate的这种方法,你可以收到"后台"推送通知: application(_:didReceiveRemoteNotification:fetchCompletionHandler :)

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)
{
    // do what you need i.e. download fresh content (max. 30 seconds)

    completionHandler(UIBackgroundFetchResult.NoData)
}
Run Code Online (Sandbox Code Playgroud)

正如此方法的文档说明:

使用此方法处理应用程序的传入远程通知.与应用程序:didReceiveRemoteNotification:方法不同,只有当您的应用程序在前台运行时才会调用该方法,系统会在您的应用程序在前台或后台运行时调用此方法.此外,如果您启用了远程通知后台模式,系统将启动您的应用程序(或将其从暂停状态唤醒),并在远程通知到达时将其置于后台状态.

不要忘记在后台模式中启用"后台获取""远程通知".

在此输入图像描述

有关背景执行的更多信息