有两种情况:
你需要做的就是要通知这些事件发生时:现在
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appWillResignActive)
name:UIApplicationWillResignActiveNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appWillTerminate)
name:UIApplicationWillTerminateNotification
object:nil];
,在各自的方法,使用PubNub的API
-(void)appWillResignActive
{
// Sample dictionary
NSDictionary *dicState = @{ @"userName" : senderName, // Optional
@"status" : @"Away", // Or whatever
@"isTyping" : @FALSE // Optional
};
[AppDel.client setState: dicState
forUUID: senderId // current user's UUID
onChannel: KPubNubChannelName // channel name
withCompletion: ^(PNClientStateUpdateStatus *status)
{
NSLog(@"%@", status);
}];
}
设置状态一旦状态更新在PubNub上,该频道的所有订户将被通知,即,将按照以下方式调用该方法:
- (void)client:(PubNub *)client didReceivePresenceEvent:(PNPresenceEventResult *)event
{
if (![event.data.channel isEqualToString:event.data.subscription])
{
// Presence event has been received on channel group stored in event.data.subscription.
}
else
{
// Presence event has been received on channel stored in event.data.channel.
}
if (![event.data.presenceEvent isEqualToString:@"state-change"]) {
NSLog(@"%@ \"%@'ed\"\nat: %@ on %@ (Occupancy: %@)", event.data.presence.uuid,
event.data.presenceEvent, event.data.presence.timetoken, event.data.channel,
event.data.presence.occupancy);
}
else {
NSLog(@"%@ changed state at: %@ on %@ to: %@", event.data.presence.uuid,
event.data.presence.timetoken, event.data.channel, event.data.presence.state);
}
}
当它被调用时,您将不得不相应更新您的数据源,这将反映状态更新。
嗨!我们为您提供解决方案,并会尽快提供一些说明。 – PubNub
请通过[email protected]与我们联系,我们希望更多地了解您的应用程序,并从那里,我们可以为您提供最佳的解决方案。 – gurooj