收到远程通知时如何在WebView中加载不同的页面?

时间:2012-11-20 13:53:31

标签: ios uiwebview push-notification

这个问题让我失望,因为虽然看起来很容易,但我无法解决它。 事实是我有一个iOS应用程序,主要是加载网站的webview,我需要在收到通知时加载不同的文页。我正在实施推送通知,我已设法让它们正常工作。它们由App Delegate中的应用程序接收,然后是问题开始时。我想用特定的URL启动webview,但我不知道该怎么做。我试图获取webview实例并将URL传递给它:

“SomeAppDelegate.h”

#import <UIKit/UIKit.h>
@class BrowserViewController;

@interface SomeAppDelegate : UIResponder <UIApplicationDelegate>
@property(nonatomic, retain) IBOutlet BrowserViewController *viewController;
@property (strong, nonatomic) UIWindow *window;
@end

“SomeAppDelegate.m”

#import "SomeAppDelegate.h"
#import "BrowserViewController.h"

@implementation SomeAppDelegate
@synthesize window = _window; 
@synthesize viewController;
.........


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[viewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:20]];
[self.window addSubview:viewController.webView];
[self.window makeKeyAndVisible];

另一个测试是在BrowserViewContrller中创建一个实例方法,试图从那里重新加载。我还尝试以编程方式加载故事板,但当在故事板中取消选中“是初始视图控制器”时,应用程序在发布之前崩溃。

我做了很多谷歌搜索,但我不太了解这个生命周期是如何工作的。我会感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

可能你应该将你的viewcontroller设置为appDelegate的window.rootViewController在你的app委托的didFinishLaunching:withOptions:方法中,而不是将它的webView添加为窗口子视图 - 因为webView只在UIViewController的方法viewDidLoad之后加载被调用 - 这意味着当您尝试使用请求重新加载时,可能无法加载您的webView。