【问题标题】:NSNotification centre to observe whether an application is opened through URL SchemeNSNotification 中心观察应用是否通过 URL Scheme 打开
【发布时间】:2014-03-25 09:57:15
【问题描述】:

我有一个类可以让NSNotificationCenter 观察应用程序是处于活动状态还是进入后台,它会据此执行一组操作。

我想设置一个NSNotificationCenter来观察应用是否通过URL scheme打开。

这是我尝试过的:

[[NSNotificationCenter defaultCenter] addObserver:[self class] selector:@selector(appOpenedThroughUrl:) name:UIApplicationLaunchOptionsURLKey object:nil];

但是当应用程序通过 URL 打开时它没有被调用,请给我一些想法来做同样的事情。

我不想使用委托:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

+(void)appOpenedThroughUrl:(NSNotification *)notification { 
  NSLog(@"%@",notification.userInfo); 
}

【问题讨论】:

  • 你可以添加你的方法appOpenedThroughUrl:也?
  • +(void)appOpenedThroughUrl:(NSNotification *)notification { NSLog(@"%@",notification.userInfo); }

标签: ios iphone nsnotificationcenter uiapplicationdelegate url-scheme


【解决方案1】:

您需要在通过自定义 url 方案打开时发布通知 [[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationLaunchOptionsURLKey object:self];

【讨论】:

  • 我必须把这段代码放在哪里?当它通过 url 打开而不在里面写任何东西时会通知 myapp - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url ??
  • 是的,您需要在此代码中发布通知 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ [[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationLaunchOptionsURLKey object:self];}
  • 我必须在哪里添加?请确保您的答案是明确的
  • 当您的应用程序通过 url 方案打开时 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 在此函数中被调用,您可以发布通知并确保您在发布通知之前添加了观察者。
猜你喜欢
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多