我在我的应用程序中使用Notification Extension来更改通知声音。
当用户关闭设置页面中的UISwitch
时,我会保存在NSUserDefaults
a boolean
中以跟踪状态。
但是,我有两种不同语言的两种不同的故事板,每种都有自己的风格。
当我使用故事板A并且我在控制台中打印boolean
的状态时,它正确地打印状态。但是当我改变语言时,不同的故事板B就会加载。 boolean
始终返回false
。
虽然布尔值总是返回false
,但我已经测试了通知的声音,它可以正常工作。
知道为什么boolean
总是返回false
?我需要正确的值才能在设置页面中正确显示铃声的状态。
这是我正在使用的代码:
- (void)setPlayDefaultSound:(BOOL)playDefaultSound
{
NSUserDefaults *def = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.xx.xxx.NotificationServices"];
[def setBool:playDefaultSound forKey:@"playDefaultSound"];
[def synchronize];
}
- (BOOL)playDefaultSound
{
NSUserDefaults *def = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.xx.xxx.NotificationServices"];
return [def boolForKey:@"playDefaultSound"];
}
这是Notification Services Extension的Info.plist的屏幕截图:
答案 0 :(得分:0)
您每次都在创建NSUserDefaults的新实例。每次使用相同的实例。
改为使用它。
"architect": {
"build": { ... }
"server": {
"builder": "@angular-devkit/build-angular:server",
"options": {
"outputPath": "dist/your-project-name-server",
"main": "src/main.server.ts",
"tsConfig": "src/tsconfig.server.json"
}
}
}
答案 1 :(得分:0)
功能名称不匹配,这是一个错字。
现在正常工作。