Publishing messages from Parse via PubNub
Asked Answered
S

1

7

I would like to use PubNub with Parse for a chat module. Could somebody explain me how can i send messages with text and images via PubNub to a user (only one-to-one)? I wanna use the PFUser usernames as the id of a user's private channel.

I've found this code in the PubNub help docs, but i've never seen code like this in objective-c. Where/how should i use this line?

curl https://pubsub.pubnub.com/publish/<PUB-KEY>/<SUB-KEY>/0/<CHANNEL-NAME>/0/%22Hellooooooo%22

It's also unclear for me that where should i store the messages? In Parse or can i store them only at PubNub? I'm not sure that the second variation is possible, because i didn't see any data storage at PubNub. Or for example i'm sending only the url's of the PFObjects that i store at Parse?

Subject answered 7/5, 2014 at 22:32 Comment(0)
H
10

Parse + PubNub Publish Messages

PubNub Parse

You can publish messages inside of parse cloud to your mobile users to create chat experiences easily. If you want to send the messages directly from within Parse Cloud use the following code to send a message to a user:

Publish PubNub Message on Parse Cloud

Parse.Cloud.httpRequest({
  url: 'https://pubsub.pubnub.com/publish/<PUB-KEY>/<SUB-KEY>/0/<USER-CHANNEL-NAME>/0/%22Hellooooooo!%22',
  // successful HTTP status code
  success: function(httpResponse) {
    console.log(httpResponse.text);
  },
  // unsuccessful HTTP status code
  error: function(httpResponse) {
    console.error('Request failed with response code ' + httpResponse.status);
  }
});

You don't necessarily need to use Parse this way. You can instead send messages directly between users to each user's channel name. Sally has "channel-sally", and Bill has "channel-bill". You can publish and subscribe directly form your Objective-C App Code. Bill will subscribe to his own channel and a Sally to her channel.

Bob's App

// Define a channel
PNChannel *myChannel     = [PNChannel channelWithName:@"channel-bob"];
PNChannel *friendChannel = [PNChannel channelWithName:@"channel-sally"];

// Receive Messages Sent to Me!
[PubNub subscribeOnChannel:myChannel];

// Send a Message to Sally
[PubNub sendMessage:@"Hello from PubNub iOS!" toChannel:friendChannel];

//(In AppDelegate.m, define didReceiveMessage delegate method:)
- (void)pubnubClient:(PubNub *)client didReceiveMessage:(PNMessage *)message {
   NSLog(@"Received: %@", message.message);
}

Bob can receive messages on his own channel and he can send messages to Sally or any other of his friends.

Hadsall answered 8/5, 2014 at 16:22 Comment(3)
How can i assign a user to a channel? I mean, how can i implement that bill's channel is channel-bill? For example, can i use something like that to define my channel: PFUser *currentUser = [PFUser currentUser]; PNChannel *my_channel = [PNChannel channelWithName:@"currentUser"]; ?Subject
@sabin Good question. You can assign the user's channel by getting the USERID from Parse and use the USERID as the channel name.Hadsall
Great, i'll try to do it that way. I really appreciate your help, thnx. Getting information straight from the source is amazing!Subject

© 2022 - 2024 — McMap. All rights reserved.