使用PubNub实现多用户移动位置仪表板

时间:2013-11-14 01:09:23

标签: ruby-on-rails ios7 pubnub

我正在尝试创建一个示例IOS应用程序,它将位置更新从移动设备从后台发布到rails后端,后端连接到postgres数据库并呈现Web前端。

工作流:

基本上,当用户通过移动应用程序上的ouath登录时,应用程序会进入后台并继续使用pubnub通道将后台位置数据发送到服务器。因此,用户X登录到他的移动设备上的应用程序,用户Y登录到她的应用程序,并且他们连接到将它们放在仪表板上的频道。现在,用户M登录到仪表板并且仅找到用户X和Y.另一个用户Z可以在他的移动设备上登录但是他使用单独的频道(?),因此当M登录到Web仪表板但是显示时不显示当另一个用户N登录时

所以

X,Y ==== Channel A ===== User M (Web Dashboard) (Does not see Z)
Z   ==== Channel B(or channel A itself if possible) ==== User N( Web dashboard) (Does not see X,Y)

我的问题有三个:

1。)我是否必须为每个仪表板用户创建单独的通道以实现此功能,然后单独连接它们?

2。)是否有后台pubnub支持从后台发送位置更新(在IOS7上允许)

3.)连接定价有点令人困惑,是否有人知道定价结构如何适用于上面的实现,每个连接到任何频道或每个频道或其他方式?

我假设我必须启用pubnub存在启用才能执行此操作。

是否存在类似内容的示例应用程序(可能是聊天应用程序需要这样的东西)。 ? Pubnub有很多关于API的文档,但样本量较少。

1 个答案:

答案 0 :(得分:2)

PubNub实时网络iOS多用户仪表板GeoLocation应用程序

这是一个关于创建在地图上提供用户位置点的应用程序的好问题。用户基本上使用PubNub.subscribe()连接到PubNub频道,并将从其他用户接收任何LAT / LONG坐标。所有用户都会发出PubNub.Publish(LAT/LONG)个代码,以便频道由连接到该频道的所有用户接收。

通过PubNub数据通道分割和分割种群

为了对细分进行细分,您只需使用不同的频道

iOS后台任务更新位置PubNub

您可以在iOS7上运行后台线程。建议的选项绑定到后台地理位置更改事件,然后发出PubNub.Publish(LAT/LONG)以发送更改。您将绑定iOS多任务:didUpdateToLocation的后台位置http://mobile.tutsplus.com/tutorials/iphone/ios-multitasking-background-location/。背景位置非常容易实现。

locationManager = [[CLLocationManager alloc] init];
[locationManager setDelegate:self];

// Increased Accuracy is used only when app is Visible/Open.
// Otherwise only significant changes are transmittable.
[locationManager setDesiredAccuracy:kCLLocationAccuracyBest];

- (void)
locationManager:     (CLLocationManager *)manager 
didUpdateToLocation: (CLLocation *)newLocation 
fromLocation:        (CLLocation *)oldLocation {
    CLLocationCoordinate2D currentCoordinates = newLocation.coordinate;
    NSLog(
        @" NEW LOCATION: Lat(%f) Long(%f)", 
        currentCoordinates.latitude,
        currentCoordinates.longitude
    );

    // Define a channel
    PNChannel *channel_1 = [PNChannel channelWithName:@"a" shouldObservePresence:NO];

    // Send Lat/Long
    [PubNub sendMessage:@{@"lat":currentCoordinates.latitude,@"long":currentCoordinates.longitude}  toChannel:channel_1];
}
  

PubNub iOS基础知识:https://github.com/pubnub/objective-c/tree/master/iOS#lets-start-coding-now-with-pubnub

PubNub上的连接定价

PubNub以Daily Active Devices指标结算。如果用户整天或当天的任何时间点都已连接,那么我们会将计数器增加1。这是一个24小时的窗口,我们增加这个数字。 24小时后,该值将重置为0

PubNub Presence

PubNub上的Presence将为您提供基于每个频道的连接分析,允许您实时检测总连接设备。