我已经使用Parse.com在我的应用程序中实现了推送通知系统,一切都很棒!
我唯一的问题是,当通知到达时:它不播放任何声音!
我进入设置(在我的平板电脑中),在通知下,我看到了:
当您看到“声音”和“徽章”关闭时。如果我打开它们,那么当推送通知到达时:它会播放声音!
所以......我希望在安装我的应用程序时,这两个选项默认为TRUE。
这可能吗?我怎么能这样做?
我在Swift工作,到目前为止这是我的代码:
方法didFinishLaunchingWithOptions
var pushSettings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert | UIUserNotificationType.Badge , categories: nil)
application.registerUserNotificationSettings(pushSettings)
application.registerForRemoteNotifications()
非常感谢帮助我
答案 0 :(得分:4)
UIApplication.sharedApplication().registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert, categories: nil))
你必须设置soundName,因为默认是没有声音:
对于此属性,请指定a的文件名(包括扩展名) 应用程序主要包中的声音资源或 UILocalNotificationDefaultSoundName请求默认系统 声音。当系统显示本地通知的警报时 徽章应用程序图标,它播放此声音。默认值为nil(no 声音)。不支持持续时间超过30秒的声音。如果 你指定一个播放超过30秒的声音的文件, 而是播放默认声音。
yourNotification.soundName = UILocalNotificationDefaultSoundName
您需要使用的远程通知 The Notification Payload
答案 1 :(得分:0)
与UIUserNotificationSettings类似,请尝试使用RemoteNotification。
例如,在Objective-C中:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
答案 2 :(得分:0)
我想这只是你在这个精确设备上遇到的问题。在另一个上尝试,看看它是否不同。
答案 3 :(得分:0)
如果您希望为通知播放IOS标准声音,则需要将content.sound
设置为UNNotificationSound.default()
您可以在我的日程安排功能中执行此操作,就像我在此处所做的那样:
func schdule(date:Date,repeats:Bool)->Date?{
let content = UNMutableNotificationContent()
content.sound = UNNotificationSound.default()
content.title = "Title"
content.body = "blablablabla"
content.setValue("YES", forKeyPath:"shouldAlwaysAlertWhileAppIsForeground")
let trigger = UNCalendarNotificationTrigger(dateMatching: yourDateComponents,repeats: repeats)
let request = UNNotificationRequest(identifier: "TestNotification", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error:Error?) in
if error == nil {
print("Notification Schduled",trigger.nextTriggerDate()?.formattedDate ?? "Date nil")
} else {
print("Error schduling a notification",error?.localizedDescription ?? "")
}
}
return trigger.nextTriggerDate()
}