-1

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

特别是,我想发送一个名为 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

从名为 OrderAndPay 的“客户端”应用程序到名为 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 说

打印错误描述:Error Domain=MCSession Code=1 "Peers ((POS)) not connected" UserInfo=0x16e8bcb0 {NSLocalizedDescription=Peers ((POS)) not connected}

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

我该如何解决?

4

2 回答 2

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
于 2015-11-23T06:37:27.260 回答
0

解决了。我已经更改了 if 语句中的调用

[self.mpHandler.session sendData:dataToBeSent
                            toPeers: [self.mpHandler.session connectedPeers]
                           withMode:MCSessionSendDataUnreliable
                              error:&error]

它奏效了。

于 2014-08-28T08:24:25.277 回答