2

受け取った通知には、で開くURLが含まれてい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.
}
4

3 に答える 3

1

UIWebViewこれを行う 1 つの方法は、受信した通知を投稿することです。NSNotificationCenter Class ReferenceまたはSOのこの例を確認してください。

于 2013-01-09T09:00:45.073 に答える
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は複雑に見えますが、これはアプリをセットアップする方法に必要でした。これはアプリによって異なる場合があります。

アイデアは、開かれているビュー コントローラーを取得し、URL を にロードすることUIWebViewです。コードは、 が現在開いていると想定してUIViewControllerUIWebViewます。UIViewControllerで URL を開く前に正しい場所に移動する場合は、コードを変更する必要がありますUIWebView

于 2013-01-09T09:03:22.943 に答える
0

次のように、UIWebView が存在するビューにオブザーバーを配置します。

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(recievedNotification:) name:@"ReceivedNotification" object:nil];

UIWebView のターゲット URL を変更する recievedNotification 関数内に適切なコードを記述します。

そして、次のようなAPPデリゲートのdidReceiveRemoteNotification関数に通知を投稿します。

    [[NSNotificationCenter defaultCenter] postNotificationName:@"ReceivedNotification" object:nil];

幸運を。

于 2013-01-09T09:05:50.253 に答える