应用程序启动后,我可以获得iOS Startup Notification吗?

时间:2013-08-05 11:27:37

标签: ios objective-c notifications startup launch

我正在寻找一种在iOS上检索不涉及使用应用程序委托的UIApplicationLaunchOptionsLocalNotificationKey的方法,即我不想实现以下内容:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UILocalNotification *localNotification = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey];
    if (localNotification != nil)
    {
        // Process notification
    }
}

我正在尝试创建一个需要有关启动通知信息的帮助程序库。无论如何这样做?我可以在申请过程的稍后时间通过其他方法检索启动选项吗?

2 个答案:

答案 0 :(得分:2)

您可以将自己添加为UIApplicationDidFinishLaunchingNotification通知的观察者,该通知将由应用程序提出并包含您要查找的信息。


正如@Stavash所暗示的那样,存在局限性。对于第一次启动,您将无法选择此通知,因为您的库的实例将不会被创建(您的类需要位于根XIB中)。但是,当为本地/远程通知重新打开应用程序时,也会发送此通知。

答案 1 :(得分:0)

使用AppDelegate类别并在类别的+ load方法中添加UIApplicationDidFinishLaunchingNotification的观察者。对于观察者类,你不能使用" self"但你必须使用单例对象。以下是完成这项工作的确切步骤。

  1. 为AppDelegate添加类别。例如:@interface AppDelegate (通知)。
  2. 在您的类别中实施+ load方法。什么时候 应用程序启动后,它将开始调用所有的加载方法 加载的类。这也包括您的类别。
  3. 创建 一个Singleton类,有一个接收的方法 NSNotification。所以实现这样的签名 - (void)appDidLaunch:(NSNotification *)通知;在你的单身人士 类。
  4. 在+ load方法中,添加通知的观察者 " UIApplicationDidFinishLaunchingNotification&#34 ;.
  5. 制作单身人士 object作为此通知的观察者。
  6. 添加断点 在你的+ load和appDidLaunch方法中查看序列 被调用的方法。您也将获得launchOptions 观察者回调方法。
  7. 另一种方法是使用swizzle_init方法Swizzle AppDelegate的init方法。这样你就可以避免使用Singleton对象并定义你的" appDidLaunch" AppDelegate类别中的观察者方法。在这种情况下,您可以设置自我'作为通知的观察员。