Objective-C:如何正确处理 iOS 推送通知?

Posted

技术标签:

【中文标题】Objective-C:如何正确处理 iOS 推送通知?【英文标题】:Objective-C: How to Handle an iOS push notification properly? 【发布时间】:2015-12-24 12:12:17 【问题描述】:

我已经在我的应用程序中正确实现了接收推送通知的所有内容,我收到通知很好,但是当用户点击它时我该怎么做?

这是我关于此事的代码:

AppDelegate.m:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

    NSLog(@"Received notification: %@", userInfo);
    NSLog(@"Hello from appDelegate");

它正在工作,我在我的 Xcode 日志中获取了 userInfo 和其他消息。

现在我想在用户单击通知时做一些事情(转到特定的 segue)。我看过docs,但它非常复杂且难以理解。

我只需要知道在 MainViewController.m 中使用什么函数

有什么提示吗?提前致谢。

【问题讨论】:

***.com/a/17499009/3800154 这个呢? 【参考方案1】:

您可以从AppDelegate 发布关于不同事件的通知(使用NSNotificationCenter),然后在您想要执行特定操作的特定类中添加观察者。

代码实现

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    NSString *aStrEventType = userInfo[@"eventType"];
    if ([aStrEventType isEqualToString:@"callWebService"]) 
        [[NSNotificationCenter defaultCenter] postNotificationName:@"callWebService" object:nil];
    else
        // Implement other notification here
    

现在在您的特定班级中,您可以按如下方式处理通知。

- (void)viewDidLoad

    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:@"" selector:@selector(callMyWebService) name:nil object:nil];

-(void)callMyWebService
      //Perform your action.

【讨论】:

请说明您要执行的操作。 我正在发送一个带有 artilce_id 的推送通知,我想获取这个 article_id 并执行特定的 segue 您是否在屏幕上您想从哪里推送 segue?我的意思是确保您不在其他屏幕上,然后想从其他地方推送。 让我们continue this discussion in chat。

以上是关于Objective-C:如何正确处理 iOS 推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap ios推送通知

IOS / Objective-C / Storyboard:推送视图控制器的后退按钮未激活

我如何知道 Xcode Objective-C 中的错误在哪里引发?

如何在 iOS 13 Objective-c 中处理鼠标事件

如何通过NEHotspotHelper获取WiFi列表(IOS,objective-c)

如何将推送通知添加到 WebView 应用程序(Android 和 iOS)