peerID の表示名をそのまま使用できます。これは、MCPeerID のプロパティです。ブラウジングを開始したら、ユーザーが以前に接続したピアを選択する前、またはその画面に来てブラウジングを開始する前に、近くのピアを循環して表示名が一致するかどうかを確認します。その場合は、体系的に招待を送信して接続を再確立できます。
選択可能な以前の接続が現在近くにあるピアであるものだけになるように、これを行うこともできます。
更新:ピア名の衝突がないようにするには、名前を一意にする必要があります。 これを行う方法を知っている最善の方法は、UUID ベースの名前を作成することです。これを単純なオブジェクト (以下の UserPeerInfo) 内に保存し、これを NSUserDefaults に保存/ロードして、このピア名が常にこのピアに使用されるようにします。
// Initialize with any stored data
if (!_userPeerInfo) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"userPeerInfo"]) {
NSData *userPeerInfoData = [defaults objectForKey:@"userPeerInfo"];
_userPeerInfo = (UserPeerInfo*)[NSKeyedUnarchiver unarchiveObjectWithData:userPeerInfoData];
} else
{
NSString *peerName = [[NSUUID UUID] UUIDString];
_userPeerInfo.peerName = peerName;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// Create an NSData representation
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:_userPeerInfo];
[defaults setObject:data forKey:@"userPeerInfo"];
[defaults synchronize];
}
}
次に、ピアの名前を設定して初期化するときは、通常どおりそのピア名を使用します
self.peerId = [[MCPeerID alloc] initWithDisplayName:self.userPeerInfo.peerName];
self.advertiser = [[MCNearbyServiceAdvertiser alloc] initWithPeer:self.peerId discoveryInfo:info serviceType:kServiceType];
self.advertiser.delegate = self;
[self.advertiser startAdvertisingPeer];