自定义声音远程推送通知 iOS 不工作
Custom sound remote push notification iOS not working
我正在尝试更改远程消息的声音
我已经将文件添加到我的项目中,见图 1
我还将所有内容添加到我的 AppDelegate 中。在我添加的 didFinishLaunchingWithOptions 中:
if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8.0 {
UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Sound | .Alert | .Badge, categories: nil))
UIApplication.sharedApplication().registerForRemoteNotifications()
} else {
UIApplication.sharedApplication().registerForRemoteNotificationTypes(.Badge | .Sound | .Alert)
}
//Clear badge
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
UIApplication.sharedApplication().cancelAllLocalNotifications()
我实现的其他方法是:
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
let deviceTokenString = deviceToken.hexString
println(deviceTokenString)
let task = service.writeForNotifications(token: deviceTokenString, completionHandler: {
})
task.resume()
}
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
println("Failed to get token: \(error)")
}
我从服务中收到的Json是:
{"aps":{"alert":"The push message!", "sound":"ice.caf"}}
我不确定在哪一步忘记更改通知的声音?
当我收到通知时,它总是播放默认声音。
您确定文件已添加到捆绑包中吗?您可以通过查看 Build Phases
.
中的 Copy Bundle Resources
来检查这一点
请参阅此图片以进行说明:
您需要检查以下内容才能推送通知工作
- 声音文件不能超过 30 秒
- 声音文件应该是有效的格式,(.aiff、.wav 或 .caf 文件)文件的一些时间扩展名显示它是正确的但它不是,所以你需要转换它
- 声音文件应位于项目的根文件夹中,而不是子文件夹中
- 有效负载(推送 json 数据)的格式应该正确(在您的情况下它看起来不错)
- 在您的项目设置
Capabilities
中,推送通知应该是 on
(在您的情况下它看起来 on
因为您收到的是默认声音通知)
- 请确保您的声音文件在
Build Phases
中的 Copy Bundle Resources
中列出
我正在尝试更改远程消息的声音
我已经将文件添加到我的项目中,见图 1
我还将所有内容添加到我的 AppDelegate 中。在我添加的 didFinishLaunchingWithOptions 中:
if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8.0 {
UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Sound | .Alert | .Badge, categories: nil))
UIApplication.sharedApplication().registerForRemoteNotifications()
} else {
UIApplication.sharedApplication().registerForRemoteNotificationTypes(.Badge | .Sound | .Alert)
}
//Clear badge
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
UIApplication.sharedApplication().cancelAllLocalNotifications()
我实现的其他方法是:
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
let deviceTokenString = deviceToken.hexString
println(deviceTokenString)
let task = service.writeForNotifications(token: deviceTokenString, completionHandler: {
})
task.resume()
}
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
println("Failed to get token: \(error)")
}
我从服务中收到的Json是:
{"aps":{"alert":"The push message!", "sound":"ice.caf"}}
我不确定在哪一步忘记更改通知的声音? 当我收到通知时,它总是播放默认声音。
您确定文件已添加到捆绑包中吗?您可以通过查看 Build Phases
.
Copy Bundle Resources
来检查这一点
请参阅此图片以进行说明:
您需要检查以下内容才能推送通知工作
- 声音文件不能超过 30 秒
- 声音文件应该是有效的格式,(.aiff、.wav 或 .caf 文件)文件的一些时间扩展名显示它是正确的但它不是,所以你需要转换它
- 声音文件应位于项目的根文件夹中,而不是子文件夹中
- 有效负载(推送 json 数据)的格式应该正确(在您的情况下它看起来不错)
- 在您的项目设置
Capabilities
中,推送通知应该是on
(在您的情况下它看起来on
因为您收到的是默认声音通知) - 请确保您的声音文件在
Build Phases
中的
Copy Bundle Resources
中列出