У меня была похожая проблема.Я обнаружил, что одним из возможных способов идентификации клиентов является передача им какого-либо токен-объекта на сервер как часть каждого вызова.На сервере вы можете сделать:
NSConnection* clientConnection = [passedTokenObject connectionForProxy];
Это даст вам дескриптор соединения, который будет уникальным для каждого клиента.Возможность получения необходимой информации зависит от того, что Apple позволяет вам делать с этим объектом подключения.
В моем приложении у меня сначала были клиенты, которые делали «регистрационный» вызов, который я использовал для сбора информации.Мне нужно было о них.
Другая вещь, которая может оказаться полезной, - стать NSConnectionDelegate для NSConnection, который вы используете для продажи своего объекта сервера.Это даст вам доступ к следующим методам:
- (BOOL)connection:(NSConnection *)parentConnection shouldMakeNewConnection:(NSConnection *)newConnnection {
// You can inspect new connection being established here and maybe glean info about the client
return YES;
}
- (BOOL) connection:(NSConnection *)c handleRequest:(NSDistantObjectRequest*)doReq {
// You get to see every method that is invoked here and can maybe glean info that you need.
// Returning NO means you're just snooping on the call and it will be handled in the normal way.
return NO;
}
Доступных «инструментов» недостаточно, я нашел, и мне нужно было переработать мой реализованный API, чтобы помочь предоставить необходимую информацию.