Как получить 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 выберите свой проект, затем свою цель (у вас должна быть только одна) и затем вкладку "Информация". Вы должны быть в состоянии увидеть идентификатор пакета там.

Ответ на этот вопрос можно найти здесь:

Как получить идентификатор пакета?

Другие вопросы по тегам