我收到的通知中包含要在UIWebView
中打开的网址。但我无法从我的UIWebview
访问AppDelegate
(这是接收notification
的地方)。
-(void) application:(UIApplication *)application didReceiveRemoteNotification(NSDictionary* ) userInfo{
// handle notification (this works)
//HERE I want to call my UIWebView and load the url I got.
}
答案 0 :(得分:1)
执行此操作的一种方法是发布您的UIWebView
收到的通知。查看NSNotificationCenter Class Reference或this example on SO。
答案 1 :(得分:1)
在我的应用中,我使用了以下内容,这是UIWebView
已经出现在屏幕上的时间:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSString *urlString = [userInfo objectForKey:@"url"];
if( [self.window.rootViewController isKindOfClass:[UINavigationController class]] ){
UINavigationController *currentNavigationController = (UINavigationController*)self.window.rootViewController;
if( [currentNavigationController.visibleViewController isKindOfClass:[NHCallVC class]] ){
SomeViewController *currentViewController = (SomeViewController*)currentNavigationController.visibleViewController;
[currentViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];
}
}
}
UINavigationController
的结构似乎很复杂,但这是我设置应用的方式所必需的。这可能与您的应用有所不同。
想法是获取已打开的viewcontroller并在UIWebView
上加载URL。代码假设UIViewController
当前UIWebView
已打开。如果您想在UIViewController
打开网址之前导航到正确的UIWebView
,则应更改代码。
答案 2 :(得分:0)
将观察者放置在UIWebView所在的视图中,例如:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recievedNotification:) name:@"ReceivedNotification" object:nil];
在recievedNotification函数中编写适当的代码,以更改UIWebView的目标URL。
并在APP委托中的didReceiveRemoteNotification函数中发布通知,例如:
[[NSNotificationCenter defaultCenter] postNotificationName:@"ReceivedNotification" object:nil];
祝你好运。