gpt4 book ai didi

ios - PubNub 和多 View Controller

转载 作者:行者123 更新时间:2023-11-29 10:22:30 26 4
gpt4 key购买 nike

我正在制作一个应用程序,它将使用 PubNub 作为应用程序的群聊部分。我在我的应用程序上打开了 Playback 并完成了设置代码的教程。不过我很困惑,因为所有代码都在 AppDelegate 中,而且我将聊天 View Controller 作为 Storyboard的一部分。我的问题是,我必须在我的 View Controller 中执行哪些设置代码,以便我可以使用 historyForChannel:start:end:limit:withCompletion: 方法获取所有过去的 100 条消息。我必须创建一个新的 PubNub 客户端实例吗?这没有意义,因为用户将切换 View Controller 并且它应该存储在一个长生命周期的属性中。

我必须在我的 View Controller 中执行哪些设置代码才能获取过去的消息? (加载到一个非常复杂的 tableview 设置中)

最佳答案

所以我想出了一个可行的解决方案。首先,您必须通过在 AppDelegate.h 中定义 PubNub 客户端属性来公开它。文件,而不是 .m实现。

// AppDelegate.h
#import <UIKit/UIKit.h>
#import <PubNub/PubNub.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate, PNObjectEventListener>

@property (strong, nonatomic) UIWindow *window;

// Stores reference on PubNub client to make sure what it won't be released.
@property (nonatomic) PubNub *pnClient;

@end

并且不要忘记从 AppDelegate.m 中删除

#import "AppDelegate.h"

@interface AppDelegate ()
/*
// Stores reference on PubNub client to make sure what it won't be released.
@property (nonatomic) PubNub *pnClient;
*/ // Delete from here
@end

@implementation AppDelegate

如果你想做通知之类的,保留AppDelegate作为 [self.pnClient] 的听众属性(property)。如果没有,就删除<PNObjectEventListener>来自 AppDelegate.h[self.pnClient addListener:self];来自你的 AppDelegate.m .如果您想保留它,请不要删除它。

现在,#import你的AppDelegate在你的ChatViewController.h.m你喜欢。然后,让你的 .h符合 <PNObjectEventListener>代表。在您忘记之前,在您的 .h 中添加另一个客户或 .m将您的 PubNub 客户端的属性存储在您的 AppDelegate 中. :

// Stores reference on PubNub client to make sure what it won't be released.
@property (nonatomic) PubNub *pnClient;

接下来,在您的 viewDidLoad 中方法,添加:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

self.pnClient = appDelegate.pnClient;

[self.pnClient addListener:self];

此代码首先获取 AppDelegate您的应用程序,(因此不涉及共享实例或单例)。然后,它设置 pnClient您的应用程序委托(delegate)给 View Controller 中的“临时”客户端。 (明白为什么我们将 AppDelegate 的客户端移动到 .h 了吗?)最后,它将 self 添加为监听器,因此您可以在 View Controller 中执行操作。

就是这样!

我建议使用您的聊天 Controller 来填充 UITableView 或其他东西,以及 AppDelegate用于处理通知。

关于ios - PubNub 和多 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34257720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com