相关疑难解决方法(0)

iOS 7中的静默推送通知不起作用

在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)

有人知道吗:

  1. 如果这是一个bug?
  2. 如果假设B或C被视为远程通知是正确的(而不是Silent Push需要声音属性的错误)?如果是这样,这意味着它没有像Silent Pushes那样的速率限制...... Apple可能会解决这个问题.所以我可能不应该依赖它.
  3. 速率限制是什么(N每推X秒等)?

提前致谢.

编辑更多信息

对于A,应用程序的状态无关紧要.从未收到通知.

看起来B和C只有在将属性和值括在引号中时才有效,如下所示.

{"aps":{"content-available": 1, "sound":"silent.wav"}}
Run Code Online (Sandbox Code Playgroud)

并且通知到达应用程序:didReceiveRemoteNotification:fetchCompletionHandler:无论状态如何.

push-notification ios ios7

86
推荐指数
4
解决办法
6万
查看次数

performFetchWithCompletionHandler永远不会被触发

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错误吗?我应该雷达吗?

objective-c ios ios7

56
推荐指数
6
解决办法
4万
查看次数

仅在设备正在充电和/或应用程序是前台时才会发送静音推送通知

我已经实现了静默推送通知,但我注意到了一些奇怪的行为.静默推送通知通过以下方式处理:

- (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

56
推荐指数
4
解决办法
3万
查看次数

什么是无声推送通知?设备什么时候收到?

我想在通知栏中清除我的本地通知.为了实现这一点,我想使用静默推送通知.所以我想确认设备何时收到它以及我可以用它做什么?

apple-push-notifications ios

51
推荐指数
2
解决办法
6万
查看次数

iOS - 应用关闭时的CoreLocation和地理围栏

我已经阅读了许多关于地理围栏我的iOS应用程序的教程(例如,这里),但没有提到iOS是否允许在关闭应用程序时处理任何特定于应用程序的位置数据.

例如,据我所知,当应用程序处于后台时,这些服务仍然会持续存在(如果编码正确),但是当用户双击主页按钮并关闭应用程序时呢?还能获得位置数据吗?

objective-c core-location ios geofencing

43
推荐指数
1
解决办法
3万
查看次数

如果用户已禁用推送应用程序,是否可以进行静默远程通知?

在我的设置标签栏中:

  1. 我有一个特定于功能的开关,可以根据API响应关闭或打开.
  2. 从网站只有管理员才有权打开/关闭.
  3. 我可以在设置点击时每次进行/用户API调用以检查用户的当前设置,但是有一些缺点,例如,如果用户已经在设置,那么它将不会更新UI并且每次在设置上调用api都不会发出声音完美的解决方案.

我认为更好的解决方案是发送静默推送通知,我可以使用它来进行API调用,以便在需要时更新设置UI.

但如果用户已禁用推送通知,我仍会收到静音推送吗?处理此类情况的推荐方法是什么?

notifications objective-c push-notification ios silent-notification

38
推荐指数
3
解决办法
1万
查看次数

application:didReceiveRemoteNotification:fetchCompletionHandler Not Called

application:didReceiveRemoteNotification:fetchCompletionHandler当应用程序强行退出时,似乎不会调用该函数.我的印象是,无论应用程序处于什么状态,都会调用该函数,但似乎只有在应用程序已在后台运行时才会调用它.有没有办法在后台唤醒应用程序,如果它尚未使用新的iOS 7远程通知后台模式运行?

objective-c apple-push-notifications ios ios7

23
推荐指数
2
解决办法
4万
查看次数

我可以使用PushKit定期推出使用VoIP吗?如果用户不对通知采取行动,是否允许在后台启动被杀应用程序?

在PushKit中提到我们可以使用常规推送或VoIP推送.但我没有找到任何PKPushType用于常规推送的文档.有没有人尝试使用PushKit定期推送?如果我不使用VoIP,如果收到推送通知,可以在后台启动被杀应用程序吗?这意味着如果应用程序被杀死并且通知出现并且用户没有对其采取行动,那么如果我使用PushKit,iOS可以在后台启动应用吗?

push-notification apple-push-notifications ios appdelegate ios8

16
推荐指数
2
解决办法
6624
查看次数

当APNS仅存储一个以防设备脱机时,whatsapp如何接收多个通知?

根据官方Apple文档,如果设备处于脱机状态,APNS(Apple推送通知服务)仅存储最后一个通知.

Apple推送通知服务包括执行存储转发功能的默认服务质量(QoS)组件.如果APN尝试发送通知但设备处于脱机状态,则QoS会存储通知.它在设备上每个应用程序仅保留一个通知:从该应用程序的提供程序收到的最后一个通知.当离线设备稍后重新连接时,QoS将存储的通知转发到设备.QoS会在删除之前保留有限时间段内的通知.

那么当设备上线时,whatsapp等应用程序如何从多个用户发送消息?如果设备在线,这些消息将作为单独的通知收到.

apple-push-notifications ios whatsapp

12
推荐指数
1
解决办法
2819
查看次数

杀死应用后,后台获取功能无效

我正在尝试通过后台获取从url获取数据.我的func尝试获取数据,如果有新数据,它会发送本地通知.当我最小化应用程序时,后台提取工作大约10 - 20分钟后工作.但是,当我杀了应用程序(双击主页按钮并关闭应用程序)它不起作用.我等了大约1个小时但是没用.我在android中使用后台服务,它正在成功运行.有没有办法从网址获取数据并在应用关闭时发送本地通知?我正在使用Xcode 6和swift 1.2

background-process ios swift background-fetch

11
推荐指数
1
解决办法
9809
查看次数