gpt4 book ai didi

ios - 交互式通知 UIMutableUserNotificationActionauthenticationRequired 在一台 iphone ios 8.4 上不起作用

转载 作者:行者123 更新时间:2023-11-29 01:48:42 25 4
gpt4 key购买 nike

我们在 iOS 8 上使用交互式通知,我将交互式通知操作的 authenticationRequired 设置为 Yes,这样用户应该先解锁手机才能选择操作。

我们将应用发布到 HockeyApp 进行测试。它安装在三个不同的 iPhone 6 上,所有 iPhone 6 都装有最新的 iOS 8.4 所有 iPhone 都启用了密码和 TouchID 来解锁手机。在两部 iPhone 上,当推送伴随屏幕锁定以选择接受操作时,它按预期工作,例如用户应该首先解锁他的手机(通过密码或 TouchID)

但在一台 iPhone 上它不需要解锁!在用户可以执行操作。奇怪的是,用户需要 touchID 或密码来解锁他的手机,但通知操作却不需要。这是我们的代码,但我猜我们的代码没问题,因为它在两部手机上都按预期工作,但这里是代码,以防我们遗漏一些东西:(我们正在使用 UrbanAirship 进行推送)

UAConfig *config = [UAConfig defaultConfig];
[UAirship push].userNotificationTypes = (UIUserNotificationTypeAlert |
UIUserNotificationTypeBadge |
UIUserNotificationTypeSound);
[UAirship takeOff:config];
[UAirship push].userPushNotificationsEnabled = YES;
[UAirship push].backgroundPushNotificationsEnabled = YES;


UIMutableUserNotificationAction *acceptAction = [[UIMutableUserNotificationAction alloc] init];
acceptAction.destructive = NO;
acceptAction.activationMode = UIUserNotificationActivationModeBackground;
acceptAction.authenticationRequired = YES;
acceptAction.title = @"Accept";
acceptAction.identifier = NotificationAuthAcceptAction;

UIMutableUserNotificationAction *declineAction = [[UIMutableUserNotificationAction alloc] init];
declineAction.destructive = NO;
declineAction.activationMode = UIUserNotificationActivationModeBackground;
declineAction.authenticationRequired = YES;
declineAction.destructive = YES;
declineAction.title = @"Decline";
declineAction.identifier = NotificationAuthDeclineAction;

UIMutableUserNotificationCategory *category = [[UIMutableUserNotificationCategory alloc] init];
[category setActions:@[acceptAction, declineAction] forContext:UIUserNotificationActionContextMinimal];
[category setActions:@[acceptAction, declineAction] forContext:UIUserNotificationActionContextDefault];
category.identifier = NotificationAuthCategory;

[UAirship push].userNotificationCategories = [NSSet setWithArray:@[category]];
[[UAirship push] updateRegistration];

最佳答案

这是一个 iOS 8 错误(雷达 #18385104)。当您使用 isEqual 方法比较两个 UIUserNotificationActions 时,一些属性会设置为您正在比较的对象。由于所有类别都必须放入一个集合中,isEqual 方法适用于每个对象,因此可以为任何操作修改 authorizationRequired 和破坏性属性。

好消息是这个问题似乎在 iOS 9 中得到了修复。

这是一个显示行为的单元测试 - https://github.com/urbanairship/ios-library-dev/blob/6.1.0/AirshipLib/AirshipLogicTests/IOS8BugsTests.m

关于ios - 交互式通知 UIMutableUserNotificationActionauthenticationRequired 在一台 iphone ios 8.4 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31647784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com