IOS推送通知声音不来
Posted
技术标签:
【中文标题】IOS推送通知声音不来【英文标题】:IOS Push Notifications sound not coming 【发布时间】:2019-02-01 15:52:18 【问题描述】:我正在处理 ios 推送通知,我可以在其中获取推送通知。但问题是我在收到推送通知时无法听到任何声音。我也检查了我的通知中心,在那里我已经启用了声音。我的代码如下,请指导我如何解决这个问题。
@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge])
(granted, error) in
print("Permission granted: \(granted)")
guard granted else return
self.getNotificationSettings()
return true
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
completionHandler([.alert, .badge, .sound])
func getNotificationSettings()
UNUserNotificationCenter.current().getNotificationSettings (settings) in
print("Notification settings: \(settings)")
guard settings.authorizationStatus == .authorized else
return
DispatchQueue.main.async(execute:
UIApplication.shared.registerForRemoteNotifications()
)
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
createInstallationOnParse(deviceTokenData: deviceToken)
func applicationWillResignActive(_ application: UIApplication)
func applicationDidEnterBackground(_ application: UIApplication)
func applicationWillEnterForeground(_ application: UIApplication)
func applicationDidBecomeActive(_ application: UIApplication)
func applicationWillTerminate(_ application: UIApplication)
func application(_ application: UIApplication,
didFailToRegisterForRemoteNotificationsWithError error: Error)
print("Failed to register: \(error)")
【问题讨论】:
【参考方案1】:添加
class AppDelegate: UIResponder, UIApplicationDelegate , UNUserNotificationCenterDelegate
当你这样做时
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
委托没有被保留,willPresent
方法没有被调用,所以这样做
UNUserNotificationCenter.current().delegate = self
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
if #available(iOS 10.0, *)
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: _, _ in )
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
else
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
return true
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
let token = deviceToken.map String(format: "%02.2hhx", $0) .joined()
print("tokenMyDevice : \(token)")
func application(_ application: UIApplication,
didReceiveRemoteNotification userInfo: [AnyHashable : Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
print("get push : " , userInfo , UIApplication.shared.applicationState )
在此处阅读失败错误
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error)
print("failed to register for remote notifications with with error: \(error)")
@available(iOS 10, *)
extension AppDelegate : UNUserNotificationCenterDelegate
// Receive displayed notifications for iOS 10 devices.
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
completionHandler([.sound,.alert])
【讨论】:
感谢您的回答,在我上面的代码 sn-p 中,我已经把您建议的那行放在了上面。请您检查并指导我。 你能检查我更新的答案吗?还是不行。 我已经尝试过你的建议,仍然没有声音。 你删除了willPresent
?
请检查一下。仍然没有声音..但我能够在后台和前台获得推送通知。以上是关于IOS推送通知声音不来的主要内容,如果未能解决你的问题,请参考以下文章