菜鸟教程小白 发表于 2022-12-13 03:44:04

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 &#34;MessagesViewController.h&#34;
#import &#34;PNImports.h&#34;

@interface ChatViewController : MessagesViewController

@property (strong, nonatomic) NSMutableArray *messages;

@end
</code></pre>

<p>ChatViewController.m:</p>

<pre><code>#import &#34;ChatViewController.h&#34;
#import &lt;Parse/Parse.h&gt;

@interface ChatViewController ()

@end
PNChannel *channel;
id message;
NSDate *receiveDate;
NSString *text;
@implementation ChatViewController

#pragma mark - View lifecycle
- (void)viewDidLoad
{

    ;
    self.title = @&#34;Messages&#34;;
    self.messages = [ initWithObjects:
                     @&#34;Testing some messages here.&#34;, @&#34;lol&#34;,
                     nil];
    UIButton *exitButton = ;
    ;
    ;
    exitButton.frame = CGRectMake(0.0, 0.0, 60, 60);
    ;

    // #1 Define client configuration
    PNConfiguration *myConfig = [PNConfiguration configurationForOrigin:@&#34;pubsub.pubnub.com&#34;
                                                             publishKey:@&#34;demo&#34;
                                                         subscribeKey:@&#34;demo&#34;
                                                            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(@&#34;DELEGATE: Subscribed to channel:%@&#34;, channels);
}
- (void)pubnubClient:(PubNub *)client didReceiveMessage:(PNMessage *)message {
    NSLog(@&#34;Message received: %@&#34;, 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 - 解析 &#43; 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]
查看完整版本: ios - 解析 &#43; PubNub : private chat