0

准备出丑:

我有这个骨架应用程序,它有 PushWoosh 通知类。它工作正常。我可以向我的应用程序发送推送消息。

为此,在我的 AppDelegate 中,有一个名为

- (void) onPushAccepted:(PushNotificationManager *)pushManager withNotification:(NSDictionary *)pushNotification

这允许我在接受通知时启动东西。

同时,在我的 ViewController 中,我有一个这样的方法:

-(void)loadURL{
    NSLog(@"testing");
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:TOPIC]]];
    [webView reload];
}

当从 ViewController 本身调用时,这个工作正常。

但是,当我尝试从 appDelegate 中的“onPushAccepted”方法中调用此方法时,webView 不会显示所需的 URL,尽管如日志所示,该方法已被调用。

我想这表明我对这一切的工作缺乏一些基本的了解。

因此,我会对一些可以使这项工作有效的字符串感到满意,但我会对解释其背后的原因和方式感到非常满意。

我尝试将 onPushAccepted: 放在 ViewController 中,但这根本不起作用,尽管我在 ViewController.m 中包含了必要的“PushNotificationManager.h”。

我很困惑,需要你的帮助。

我认为您的回答将使我接近获得基础知识。

提前谢谢!

4

1 回答 1

0

在这个特定的案例中,Sjakelien 使用的是单一视图应用程序。令人困惑的是,通过执行以下操作来实例化ViewControllerin的尝试不起作用。AppDelegateViewController * vc = [[ViewController alloc]init]; [vc loadURL];

在这种情况下,解决方案是ViewController通过使用获取显示在屏幕上的

- (void) onPushAccepted:(PushNotificationManager *)pushManager withNotification:(NSDictionary *)pushNotification {
  ViewController *vc = (ViewController*)self.window.rootViewController;
  [vc loadURL];
}

具有不同设置的应用程序,例如UINavigationController需要采取不同的操作。

几个选择:

  • popToRootViewController 并实例化一个新实例ViewController并将其推送到导航堆栈上

  • ViewController在不使用 popToRootViewController 的情况下将的新实例推送到导航堆栈

  • ViewController以模态形式呈现
  • 修改应用的模型
于 2014-01-03T22:53:46.527 回答