Tie*_*eme 19 notifications push ios
我正在构建一个依赖在线数据库数据的iPhone应用程序.
要更新应用程序中的数据,我可以在某个时间间隔检查是否需要更新,但如果我可以使用推送服务向应用程序发送通知,让它知道是时候进行更新,那就更酷了.
我不是在这里谈论可见的推送通知,只是一个不可见的推送通知来触发我的应用程序中的更新方法.
有没有一种标准的方法可以做到这一点,还是我可以使用苹果的推送通知服务?
换句话说:我现在正在使用pull获取更新,是否有推动方式让我的应用程序的后端知道是时候进行更新了?
编辑:如果不可能,更新的时间间隔是多少(如果没有更新,则为0.03 kb).是否每30秒检查一次?
小智 29
Apple在线图书馆中有一个很好解释的文档.
使用Apple推送通知服务(APNS),您可以获得以下任意组合:
当我说任何我的意思是没有警报,没有徽章和没有声音也是可能的.即使应用程序已关闭(但至少执行一次,注册到通知服务中),远程通知也可用,iOS负责管理推送并唤醒您的应用程序.
如果你想使用APNS,你需要
所有与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 esamples,推送生成必须如下所示:
$apns->newMessage(1);
$apns->addMessageCustom('acme2', array('bang', 'whiz'));
$apns->queueMessage();
Run Code Online (Sandbox Code Playgroud)
是的,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:方法不同,只有当您的应用程序在前台运行时才会调用该方法,系统会在您的应用程序在前台或后台运行时调用此方法.此外,如果您启用了远程通知后台模式,系统将启动您的应用程序(或将其从暂停状态唤醒),并在远程通知到达时将其置于后台状态.
不要忘记在后台模式中启用"后台获取"和"远程通知".