Как получить bundleId исходного приложения при использовании общего ресурса в IOS8
Я хочу знать, какое приложение вызывает расширение для общего доступа, чтобы поделиться изображением с моим приложением (его bundleId или appName). Но я не нашел способа сделать это. В NSExtensionContext нет информации об исходном приложении. Я был бы очень признателен за любую помощь.
3 ответа
Вы не можете узнать, в каком приложении размещено ваше расширение. Это не часть системы расширения. Вы узнаете, какие данные передает вам приложение, и с помощью расширений действий вы можете вернуть некоторые данные. Но вы не узнаете, с кем имеете дело, только с какими данными ходите взад и вперед.
Чтобы добиться того, что вы просите:
#ifdef HIDE_POST_DIALOG
- ( void ) willMoveToParentViewController: ( UIViewController * ) parent
{
// This is called at the point where the Post dialog is about to be shown.
NSString * hostBundleID = [parent valueForKey:(@"_hostBundleID")];
NSLog( @"**** parent bundle id is %@" ,hostBundleID);
}
#endif
Ваш идентификатор пакета обычно com.yourcompany/yourname.yourappname
Если вы не знаете, что Xcode имеет для названия вашей компании, создайте новый проект, и на экране, который попросит вас указать название вашего приложения, будет название вашей компании.
Также вы можете сделать это,
В XCode выберите свой проект, затем свою цель (у вас должна быть только одна) и затем вкладку "Информация". Вы должны быть в состоянии увидеть идентификатор пакета там.
Ответ на этот вопрос можно найти здесь: