Objective C - 使用Multipeer Connectivity Framework发送对象,Peer未连接

时间:2014-08-27 10:25:17

标签: ios multipeer-connectivity peer

我正在开发一个应用程序,我需要将一个对象发送到另一个应用程序。这两个应用程序使用多重连接框架相互通信。

特别是,我想发送一个名为Order的对象,即

@interface Order : NSObject <NSCoding>

@property (strong, nonatomic) NSString *customerName;
@property (strong, nonatomic) NSDate *arrivalTime;
@property (strong, nonatomic) NSNumber *totalPrice;
@property (strong, nonatomic) NSArray *products;

@end
来自&#34;客户&#34;应用程序将OrderAndPay称为&#34;服务器&#34;应用程序称为POS。以下是我在OrderAndPay应用程序委托中发送此对象的方法

NSData *dataToBeSent = [NSKeyedArchiver archivedDataWithRootObject:self.order];
NSError *error = nil;

NSArray *array = [[NSArray alloc] initWithObjects:[self.mpHandler.session connectedPeers], nil];

if ([self.mpHandler.session sendData:dataToBeSent
                            toPeers: array
                           withMode:MCSessionSendDataUnreliable
                              error:&error]) {
    return YES;
}

return NO;

但是我总是没有结果!当我尝试调试时,xCode说

  

打印错误描述:错误域= MCSession代码= 1&#34;对等(           (           POS       ))没有连接&#34; UserInfo = 0x16e8bcb0 {NSLocalizedDescription = Peers(           (           POS       ))没有连接}

所以似乎POS没有连接。但正如我之前写的那样,我使用我的connectedPeers的方法MCSession让我的同伴!

我该如何解决?

2 个答案:

答案 0 :(得分:1)

你必须在两个应用程序中提供相同的sessionType .. static NSString * const kMCSessionServiceType = @"mcsessionp2p";

 _serviceAdvertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:self.peerID
                                                       discoveryInfo:nil
                                                         serviceType:kMCSessionServiceType];


// Create the service browser
_serviceBrowser = [[MCNearbyServiceBrowser alloc] initWithPeer:self.peerID
                                                   serviceType:kMCSessionServiceType

答案 1 :(得分:0)

解决。我在

中的if语句中更改了调用
[self.mpHandler.session sendData:dataToBeSent
                            toPeers: [self.mpHandler.session connectedPeers]
                           withMode:MCSessionSendDataUnreliable
                              error:&error]

并且有效。