Я хочу знать, какое приложение вызывает расширение общего доступа для совместного использования образа в моем приложении (его bundleId или appName). Но я не нашел возможности сделать это. Информация о исходном приложении в NSExtensionContext отсутствует. Я был бы очень признателен за любую помощь.Как получить bundleId исходного приложения при использовании расширения общего доступа в IOS8
ответ
Вы не можете узнать, что приложение хостинг для вашего расширения. Это не часть системы расширения. Вы узнаете, какие данные передают вам приложение, и с расширениями действий вы можете вернуть некоторые данные. Но вы не узнаете, с кем имеете дело, только то, что данные идут туда и обратно.
Вашего расслоение ID обычно com.yourcompany/yourname.yourappname
Если вы не знаете, что Xcode имеет свое имя компании, создать новый проект и экран, запрашивающий ваше имя приложения будет иметь название вашей компании.
Кроме того, вы можете сделать это,
В Xcode, выберите проект, то ваши цели (вы должны иметь только один), а затем вкладку «Info». Вы должны иметь возможность видеть идентификатор пакета.
Ответ на этот вопрос можно найти здесь:
Чтобы добиться того, что вы спрашиваете:
#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
Где '_hostBundleID' официально задокументированы? – Pang