我正在制作一个闹钟应用程序,我已经确认我的闹钟通知被正确触发,但声音并不总是像我预期的那样播放。
例如,当手机未处于静音模式时,通知会成功播放声音(好吧,太棒了!)。然而,当手机是在静默模式下,声音不玩了,即使该应用程序在后台运行还是(没那么大......)。
我知道静音模式应该使所有通知声音静音,但我已经从 App Store 下载了其他闹钟应用程序(如 Alarmy),即使手机处于静音状态,它们也能以某种方式播放通知声音模式,只要应用程序仍在后台运行。只有当应用程序完全退出时,静音模式才会生效。
有谁知道如何实现这个结果?是否需要在代码或 plist 文件中声明某些设置或选项?我已经在互联网上搜索过,但没有找到有关此特定问题的任何信息...
我设置 AVAudioSession 类别的代码:
private func setAudioCategory() {
do {
// Enable sound (even while in silent mode) as long as app is in foreground.
try AVAudioSession.sharedInstance().setCategory(.playback)
}
catch {
print(error.localizedDescription)
}
}
Run Code Online (Sandbox Code Playgroud)
我设置通知的代码:
/// Sets a local user notification for the provided `Alarm` object.
static func set(_ alarm: Alarm) {
// Configure the notification's content.
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey: K.Keys.notificationTitle, arguments: …Run Code Online (Sandbox Code Playgroud) nsnotificationcenter ios avaudiosession swift usernotifications
不知道为什么这对我来说如此具有挑战性,但是我如何检测用户何时终止应用程序?因为据我所知,Apple 提供了许多在应用程序关闭时可能会或可能不会被调用的函数。
func applicationWillTerminate(_ application: UIApplication):在(大多数)应用程序终止时调用,但不适用于支持后台执行的应用程序。
func sceneDidEnterBackground(_ scene: UIScene):当场景进入后台时调用,但无法区分应用程序进入后台与完全终止。
func sceneDidDisconnect(_ scene: UIScene):我确认如果用户直接终止应用程序,则会调用此函数,但如果将应用程序放在后台然后终止,则不会调用它。
// 编辑:所以我意识到上面的方法(sceneDidDisconnect)确实是我正在寻找的函数。我之前认为在上面描述的后一种情况下它没有被调用,但实际上,它被调用了。另请参阅(即将)接受的答案。
是否有一个函数在每次用户终止应用程序时都会被调用???
当我尝试将 App Check 集成到我的 iOS 应用程序中时,出现以下错误。
\nAppCheck failed: \'The operation couldn\xe2\x80\x99t be completed. The attestation provider AppAttestProvider is not supported on current platform and OS version.\'
自从出现此错误后,当我尝试从 Firestore 获取文档时,Missing or insufficient permissions.即使我所有的就绪/写入安全规则都设置为true.
作为参考,我正在使用 Xcode 13,我的项目设置设置为 iOS 15.4,并且我正在使用App Attest提供程序。我非常有信心我正确实施了一切,包括:
\n.entitlements,将 App Attest 环境设置为production.FirebaseApp.configure()。这是一个相当简单的问题,但无法通过研究找到答案。
我知道在最初的 StoreKit API 中,您必须为用户提供恢复购买的能力。然而,对于 StoreKit2,WWDC 视频解释说,很少需要恢复购买(如果有的话),因为 StoreKit2 会自动侦听并保持交易最新。
那么,如果仅使用 StoreKit2 并且最低部署目标为 iOS 15,添加恢复购买按钮是否仍然是强制性的?
我正在尝试在钥匙串中保存日期,并且(根据我的理解)这首先需要将Date对象转换为Data对象。
这个 Stack Overflow Q/A解释了如何在 Swift 3 中做到这一点(或至少是其中的一部分),但我希望有人可以提供 Swift 5 中的 to/from 函数(因为该解决方案中至少有一种方法)已被弃用,我担心其他东西也没有经受住时间的考验)。