Нельзя использовать только API-интерфейсы iOS для захвата телефонного номера (даже в частном приложении с частными API-интерфейсами), поскольку все известные способы сделать это были исправлены и заблокированы в iOS 11. Даже если обнаружен новый эксплойт, Apple ясно дала понять, что они отклонят любые приложения из магазина приложений для использования частных API для этого. Подробности смотрите в ответе Дилана.
Однако, существует законный способ захвата номера телефона без ввода данных пользователя . Это похоже на то, что делает Snapchat, но проще, так как не требует, чтобы пользователь вводил свой номер телефона.
Идея состоит в том, чтобы приложение программно отправляло SMS-сообщение на сервер с уникальным кодом установки приложения. Затем приложение может запросить тот же сервер, чтобы узнать, получило ли оно недавно SMS-сообщение с устройства с этим уникальным кодом установки приложения. Если это так, он может прочитать номер телефона, который его отправил. Вот демонстрационное видео , показывающее процесс. Как видите, он работает как шарм!
Это не очень просто настроить, но его можно настроить бесплатно за несколько часов на бесплатном уровне AWS с примером кода, приведенным в руководстве здесь .