小编Eri*_*ric的帖子

应用程序在后台时未播放本地通知声音 - Swift

我正在制作一个闹钟应用程序,我已经确认我的闹钟通知被正确触发,但声音并不总是像我预期的那样播放。

例如,当手机处于静音模式时,通知会成功播放声音(好吧,太棒了!)。然而,当手机在静默模式下,声音不玩了,即使该应用程序在后台运行还是(没那么大......)。

我知道静音模式应该使所有通知声音静音,但我已经从 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

6
推荐指数
1
解决办法
123
查看次数

如何检测用户何时终止应用程序 - Swift

不知道为什么这对我来说如此具有挑战性,但是我如何检测用户何时终止应用程序?因为据我所知,Apple 提供了许多在应用程序关闭时可能会或可能不会被调用的函数。

func applicationWillTerminate(_ application: UIApplication):在(大多数)应用程序终止时调用,但不适用于支持后台执行的应用程序。

func sceneDidEnterBackground(_ scene: UIScene):当场景进入后台时调用,但无法区分应用程序进入后台与完全终止。

func sceneDidDisconnect(_ scene: UIScene):我确认如果用户直接终止应用程序,则会调用此函数,但如果将应用程序放在后台然后终止,则不会调用它。

// 编辑:所以我意识到上面的方法(sceneDidDisconnect)确实是我正在寻找的函数。我之前认为在上面描述的后一种情况下它没有被调用,但实际上,它被调用了。另请参阅(即将)接受的答案。

是否有一个函数在每次用户终止应用程序时都会被调用???

ios appdelegate swift uiscenedelegate

6
推荐指数
1
解决办法
2537
查看次数

AppCheck 失败:当前平台和操作系统版本不支持证明提供程序 AppAttestProvider

当我尝试将 App Check 集成到我的 iOS 应用程序中时,出现以下错误。

\n

AppCheck failed: \'The operation couldn\xe2\x80\x99t be completed. The attestation provider AppAttestProvider is not supported on current platform and OS version.\'

\n

自从出现此错误后,当我尝试从 Firestore 获取文档时,Missing or insufficient permissions.即使我所有的就绪/写入安全规则都设置为true.

\n

作为参考,我正在使用 Xcode 13,我的项目设置设置为 iOS 15.4,并且我正在使用App Attest提供程序。我非常有信心我正确实施了一切,包括:

\n
    \n
  1. 安装FirebaseAppCheck(我使用SPM)。
  2. \n
  3. 向我的应用程序添加应用程序证明功能。
  4. \n
  5. 在我的项目文件中.entitlements,将 App Attest 环境设置为production.
  6. \n
  7. 在调用之前在我的应用程序委托中设置我的应用程序检查提供程序工厂FirebaseApp.configure()
  8. \n
  9. 在我的 Firebase 控制台中启用应用程序检查。
  10. \n
\n

ios firebase swift firebase-app-check xcode13

5
推荐指数
1
解决办法
3585
查看次数

在 iOS 15 中仅使用 StoreKit2 时是否必须提供“恢复购买”选项?

这是一个相当简单的问题,但无法通过研究找到答案。

我知道在最初的 StoreKit API 中,您必须为用户提供恢复购买的能力。然而,对于 StoreKit2,WWDC 视频解释说,很少需要恢复购买(如果有的话),因为 StoreKit2 会自动侦听并保持交易最新。

那么,如果仅使用 StoreKit2 并且最低部署目标为 iOS 15,添加恢复购买按钮是否仍然是强制性的?

storekit in-app-purchase ios swift ios15

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

如何在 Swift 5 中将“Date”转换为“Data”,反之亦然?

我正在尝试在钥匙串中保存日期,并且(根据我的理解)这首先需要将Date对象转换为Data对象。

这个 Stack Overflow Q/A解释了如何在 Swift 3 中做到这一点(或至少是其中的一部分),但我希望有人可以提供 Swift 5 中的 to/from 函数(因为该解决方案中至少有一种方法)已被弃用,我担心其他东西也没有经受住时间的考验)。

keychain nsdata swift swift5

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