在WWDC 2013的"多任务新功能"演示中,有一个关于静音推送通知的部分.看起来很简单.根据演示文稿,如果您将APS有效负载仅发送到内容可用设置为1,则不会通知用户该通知.
// A. This doesn't work
{
aps: {
content-available: 1
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试显示,这不起作用,因为没有收到推送.但是,如果我包含声音属性但排除了alert属性,它就会起作用(虽然不再是静音).
// B. This works
{
aps: {
content-available: 1,
sound: "default"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改声音属性以播放静音,我可以模仿静音.
// C. This works too.
{
aps: {
content-available: 1,
sound: "silence.wav"
}
}
Run Code Online (Sandbox Code Playgroud)
有人知道吗:
提前致谢.
编辑更多信息
对于A,应用程序的状态无关紧要.从未收到通知.
看起来B和C只有在将属性和值括在引号中时才有效,如下所示.
{"aps":{"content-available": 1, "sound":"silent.wav"}}
Run Code Online (Sandbox Code Playgroud)
并且通知到达应用程序:didReceiveRemoteNotification:fetchCompletionHandler:无论状态如何.
1)我的plist配置提供backgroundmode:
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
</array>
Run Code Online (Sandbox Code Playgroud)
2)didFinishLaunchingWithOptions我有:
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:1.0];
Run Code Online (Sandbox Code Playgroud)
3)我UIApplicationDelegate在代表中宣布了协议.
4)我实现了以下方法,但它永远不会被触发.(仅当我使用"XCode-> Debug-> Simulate Background Fetch"模拟获取时才有效.)
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
Run Code Online (Sandbox Code Playgroud)
为什么?这是DP5 beta错误吗?我应该雷达吗?
我已经实现了静默推送通知,但我注意到了一些奇怪的行为.静默推送通知通过以下方式处理:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
Run Code Online (Sandbox Code Playgroud)
如果设备正在充电(即连接电缆)和/或我的应用程序是前台,则似乎只接收静音推送消息.
如果我断开设备与充电器(或Mac)的连接,则除非应用程序是前台,否则不再接收静音推送通知.
在这两种情况下,我都会得到非静音推送通知.
如果我再次插入USB电缆,那么无论应用程序是前景还是后台,我都会收到预期的行为并收到静音推送通知.
我正在使用UILocalNotification,所以我知道收到了什么.
连接设备一切正常的事实表明我的静音推送通知配置正确,并且应用程序具有在plist中设置的正确背景模式等.
在iPhone 5s,6和iPad 2上都可以重复此行为,所有这些都运行IOS 8或8.1.
还有其他人经历过这个吗?它应该很容易重现.为什么将设备插入充电器的简单行为会改变接收静音推送通知的能力?
iphone background apple-push-notifications ios silent-notification
我想在通知栏中清除我的本地通知.为了实现这一点,我想使用静默推送通知.所以我想确认设备何时收到它以及我可以用它做什么?
我已经阅读了许多关于地理围栏我的iOS应用程序的教程(例如,这里),但没有提到iOS是否允许在关闭应用程序时处理任何特定于应用程序的位置数据.
例如,据我所知,当应用程序处于后台时,这些服务仍然会持续存在(如果编码正确),但是当用户双击主页按钮并关闭应用程序时呢?还能获得位置数据吗?
在我的设置标签栏中:
我认为更好的解决方案是发送静默推送通知,我可以使用它来进行API调用,以便在需要时更新设置UI.
但如果用户已禁用推送通知,我仍会收到静音推送吗?处理此类情况的推荐方法是什么?
notifications objective-c push-notification ios silent-notification
application:didReceiveRemoteNotification:fetchCompletionHandler当应用程序强行退出时,似乎不会调用该函数.我的印象是,无论应用程序处于什么状态,都会调用该函数,但似乎只有在应用程序已在后台运行时才会调用它.有没有办法在后台唤醒应用程序,如果它尚未使用新的iOS 7远程通知后台模式运行?
在PushKit中提到我们可以使用常规推送或VoIP推送.但我没有找到任何PKPushType用于常规推送的文档.有没有人尝试使用PushKit定期推送?如果我不使用VoIP,如果收到推送通知,可以在后台启动被杀应用程序吗?这意味着如果应用程序被杀死并且通知出现并且用户没有对其采取行动,那么如果我使用PushKit,iOS可以在后台启动应用吗?
push-notification apple-push-notifications ios appdelegate ios8
根据官方Apple文档,如果设备处于脱机状态,APNS(Apple推送通知服务)仅存储最后一个通知.
Apple推送通知服务包括执行存储转发功能的默认服务质量(QoS)组件.如果APN尝试发送通知但设备处于脱机状态,则QoS会存储通知.它在设备上每个应用程序仅保留一个通知:从该应用程序的提供程序收到的最后一个通知.当离线设备稍后重新连接时,QoS将存储的通知转发到设备.QoS会在删除之前保留有限时间段内的通知.
那么当设备上线时,whatsapp等应用程序如何从多个用户发送消息?如果设备在线,这些消息将作为单独的通知收到.
我正在尝试通过后台获取从url获取数据.我的func尝试获取数据,如果有新数据,它会发送本地通知.当我最小化应用程序时,后台提取工作大约10 - 20分钟后工作.但是,当我杀了应用程序(双击主页按钮并关闭应用程序)它不起作用.我等了大约1个小时但是没用.我在android中使用后台服务,它正在成功运行.有没有办法从网址获取数据并在应用关闭时发送本地通知?我正在使用Xcode 6和swift 1.2
ios ×10
objective-c ×4
ios7 ×3
appdelegate ×1
background ×1
geofencing ×1
ios8 ×1
iphone ×1
swift ×1
whatsapp ×1