ios - 解析 + PubNub : private chat
<p><p>我想与 Parse 和 Pubnub 进行私有(private)聊天。
当用户收到另一个 friend 的图片时,他可以点击“通过消息回复”,打开一个新 View ,这是两个 friend 之间的私有(private)聊天。
我在框架中使用“BubbleView”来提供 iOS 消息传递方面。
如何在 Pubnub 中创建私有(private) channel ?
我添加了</p>
<pre><code>PFUser *user = ;
channel = ;
</code></pre>
<p>但这仅影响使用该应用程序的用户的 channel ,而不影响 2 个人的 channel ...?
使用我的代码,我可以收到自己的消息,控制台说:
PubNub (xxxxxxxxxx) 订阅 channel : (
“PNChannel(xxxxxxxxx)objectID(来自解析的用户正在使用该应用程序)”
收到的消息:我发送的消息</p>
<p>这是我的代码:</p>
<p>ChatViewController.h:</p>
<pre><code>#import "MessagesViewController.h"
#import "PNImports.h"
@interface ChatViewController : MessagesViewController
@property (strong, nonatomic) NSMutableArray *messages;
@end
</code></pre>
<p>ChatViewController.m:</p>
<pre><code>#import "ChatViewController.h"
#import <Parse/Parse.h>
@interface ChatViewController ()
@end
PNChannel *channel;
id message;
NSDate *receiveDate;
NSString *text;
@implementation ChatViewController
#pragma mark - View lifecycle
- (void)viewDidLoad
{
;
self.title = @"Messages";
self.messages = [ initWithObjects:
@"Testing some messages here.", @"lol",
nil];
UIButton *exitButton = ;
;
;
exitButton.frame = CGRectMake(0.0, 0.0, 60, 60);
;
// #1 Define client configuration
PNConfiguration *myConfig = [PNConfiguration configurationForOrigin:@"pubsub.pubnub.com"
publishKey:@"demo"
subscribeKey:@"demo"
secretKey:nil];
// #2 make the configuration active
;
// #3 Connect to the PubNub
;
}
#pragma mark - Table view data source
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.messages.count;
}
#pragma mark - Messages view controller
- (BubbleMessageStyle)messageStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return (indexPath.row % 2) ? BubbleMessageStyleIncoming : BubbleMessageStyleOutgoing;
}
- (NSString *)textForRowAtIndexPath:(NSIndexPath *)indexPath
{
return ;
}
- (void)sendPressed:(UIButton *)sender withText:text
{
;
if((self.messages.count - 1) % 2)
;
else
;
PFUser *user = ;
channel = ;
// Receive Messages Sent to Me!
;
// Send a Message to Sally
;
;
}
- (void)backToInboxView{
;
}
@end
</code></pre>
<p>在 Appdelegate.m 中:</p>
<pre><code>- (void)pubnubClient:(PubNub *)client didSubscribeOnChannels:(NSArray *)channels {
NSLog(@"DELEGATE: Subscribed to channel:%@", channels);
}
- (void)pubnubClient:(PubNub *)client didReceiveMessage:(PNMessage *)message {
NSLog(@"Message received: %@", message.message);
}
</code></pre></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>虽然是在 JavaScript 中,但这是一个非常详细的教程,介绍了如何使用 PubNub 实现聊天功能(带有私有(private) + 公共(public) channel ):</p>
<p> <a href="http://www.pubnub.com/blog/javascript-private-chat-api-with-access-control/" rel="noreferrer noopener nofollow">http://www.pubnub.com/blog/javascript-private-chat-api-with-access-control/</a> </p>
<p>PubNub ObjectiveC 客户端具有相同的功能。</p>
<p>仅 PubNubchannel 只是 channel-channel 上没有属性可以说明 channel 是私有(private)的还是公共(public)的。要模拟“私有(private)”,您可以为私有(private) channel 创建难以猜测的名称(并且不要公开这些名称),但随着时间的推移,这并不是最安全的解决方案。</p>
<p>要真正将 PubNubchannel 设为私有(private),请使用 PAM 功能(如教程中所述)。这将允许您向特定 channel 授予和撤销授权 token ,因此即使有人猜到了私有(private) channel 名称,他们也无法在不知道身份验证 token 的情况下访问它。</p>
<p>要进一步锁定它,您可以使用内置加密,并且通过安全 (SSL) PubNub 连接运行,您将获得一个非常安全且可扩展的解决方案。</p></p>
<p style="font-size: 20px;">关于ios - 解析 + PubNub : private chat,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/27256313/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/27256313/
</a>
</p>
页:
[1]