【问题标题】:iOS How to set application remindersiOS 如何设置应用提醒
【发布时间】:2013-07-15 07:35:29
【问题描述】:

我们正在创建一个提醒用户某些任务的应用。 用户可以根据以下情况选择接收提醒:

一次、每日、每周、每周(在特定的工作日)、每两周、每月一次

提醒应该是应用程序中的自定义弹出窗口和/或应用程序关闭时的弹出窗口。我的问题是,设置此类提醒的最佳方式是什么?

我正在考虑这样做的方式是将其加载到手机的 SQLite 数据库中,然后在每次应用启动时检查提醒,如果提醒是,比如说每天一次,应用会自动设置下一个提醒。我不知道我将如何完成剩下的工作。

谢谢

【问题讨论】:

    标签: ios schedule reminders


    【解决方案1】:

    我使用 NSLocalNotification 在我的应用中执行此操作

    UILocalNotification *localNotification = [[UILocalNotification alloc] init];
    if (localNotification == nil)
        return;
    localNotification.fireDate = dateToRemindOn;
    localNotification.timeZone = [NSTimeZone defaultTimeZone];
    
    // details
    localNotification.alertBody = @"Alert Message";
    // Set the button title
    localNotification.alertAction = @"View";
    localNotification.soundName = UILocalNotificationDefaultSoundName;
    
    // custom data for the notification to use later
    NSDictionary *infoDict = [NSDictionary dictionaryWithObject:reminderID forKey:@"remindID"];
    localNotification.userInfo = infoDict;
    
    // Schedule notification
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    

    这将创建本地通知,您可以将可能需要的任何信息存储在用户信息字典中,并且在收到或打开时可供您使用。

    在您的 AppDelegate 中使用此方法检查应用是否已从您的本地通知中打开。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        // Handle launching from a notification
        UILocalNotification *localNotification =
        [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
        if (localNotification) {
            //handle local notification
        }
    }
    

    并在您的 App Delegate 中使用此方法来捕获应用打开时收到本地通知的时间

    - (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif {
        // Handle notification when app is running
    }
    

    【讨论】:

    • 谢谢,如果应用程序完全关闭(甚至没有暂停),此通知会显示吗?还是需要打开应用程序?如果用户按下通知上的按钮,我需要应用程序打开并运行应用程序内的特定方法。
    • 是的,如果应用程序关闭,他们将收到通知,如果他们在应用程序关闭时打开该通知,那么您将在 didFinishLaunching 方法中检查它。如果在应用程序运行时收到通知,则会调用方法 didReceiveRemoteNotification,您可以随意处理它。
    【解决方案2】:

    您可以设置NSLocalNotification 并处理应用程序状态:当您在应用程序内时,您可以推送您的自定义视图,当您在应用程序外时,您将收到标准警报。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 2016-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多