gpt4 book ai didi

ios - 检测打开应用程序的 UILocalNotification

转载 作者:IT王子 更新时间:2023-10-29 05:19:19 25 4
gpt4 key购买 nike

在某些情况下,我的 iOS 应用程序必须在同时触发多个UILocalNotification。我想决定用户点击了哪个 UILocalNotification。当用户单击 UILocalNotification 时,应用程序处于非事件状态或处于后台。问题是方法

func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {

每个触发的 UILocalNotification 调用。因此,当应用程序激活时,此方法会被多次调用,因为我收到了多个 UILocalNotification。有没有办法确定哪个 UILocalNotification 是打开应用程序的原因? applicationState 检查不起作用,因为当应用程序处于非事件状态或在后台时已收到所有 UILocalNotification

非常感谢!

编辑:举个例子:当您收到来自两个不同组 A 和 B 的 WhatsApp 消息并选择来自组 A 的推送通知时,该消息将在应用程序自行打开后立即显示。 WhatsApp 和我的用例之间的区别在于我有本地通知。

最佳答案

在安排通知时,您可以为通知用户信息设置一些唯一的 ID。

UILocalNotification *notif = [[UILocalNotification alloc] init];
notif.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];
notif.timeZone = [NSTimeZone defaultTimeZone];

// set the your data with unique id
NSMutableDictionary *dict=[NSMutableDictionary new];
[dict setObject:Id forKey:@"id"];

// assignt the dictionary to user info
notif.userInfo=dict;


notif.alertBody = @"test Notification";
notif.soundName = UILocalNotificationDefaultSoundName;


[[UIApplication sharedApplication] scheduleLocalNotification:notif];

你可以像那样从 didReceiveLocalNotification 获取用户信息

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
if ([[notification.userInfo valueForKey:@"id"] isEqualToString:@"1"])
{
NSLog(@"notification id %@",[notification.userInfo valueForKey:@"id"]);
}
else if ([[notification.userInfo valueForKey:@"id"] isEqualToString:@"2"])
{
NSLog(@"notification id %@",[notification.userInfo valueForKey:@"id"]);
}

////// or /////

if ([notification.userInfo valueForKey:@"id"] )
{
NSLog(@"id of notification %@",[notification.userInfo valueForKey:@"id"]);
}

}

来自 didFinishLaunchingWithOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey])
{
UILocalNotification *notif=[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
NSLog(@"notif.userInfo %@",notif.userInfo);

// notif.userInfo {
// id = 2;
// }

}


return YES;
}

关于ios - 检测打开应用程序的 UILocalNotification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34099214/

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