-1

アプリケーションを開発していて、別のアプリケーションにオブジェクトを送信する必要があります。これら 2 つのアプリは、マルチピア接続フレームワークを使用して相互に通信します。

特に、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;

しかし、私は結果として常にNOを得ました!!! デバッグしようとすると、xCodeは言う

エラーの説明の印刷: Error Domain=MCSession Code=1 "Peers ( ( POS ) ) not connected" UserInfo=0x16e8bcb0 {NSLocalizedDescription=Peers ( ( POS ) ) not connected}

ということで、POSがつながらないようです。しかし、前に書いたように、私connectedPeersは my 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 に答える