在 IOS8 中使用共享扩展时如何获取源应用程序的 bundleId

How to get bundleId of the source app when using share extension in IOS8

我想知道哪个应用程序调用共享扩展来将图像共享到我的应用程序(它的 bundleId 或 appName)。但是我找不到办法。 NSExtensionContext 中有 none 个关于源应用程序的信息。如果有任何帮助,我将不胜感激。

您的包 ID 通常是 com.yourcompany/yourname.yourappname

如果您不知道 Xcode 的公司名称,请创建一个新项目,提示您输入应用程序名称的屏幕将显示您的公司名称。

你也可以这样做,

在 Xcode 中,select 您的项目,然后是您的目标(您应该只有一个),然后是 'Info' 选项卡。您应该能够在那里看到包标识符。

这个问题的答案可以在这里找到:

How to get bundle ID?

您无法找出托管您的扩展程序的应用程序。那不是扩展系统的一部分。您可以了解应用程序传递给您的数据类型,并且通过操作扩展,您可以获得 return 一些数据。但是您无法了解您在与谁打交道,只能了解来回传输的数据。

实现您的要求:

#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