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

Posted

技术标签:

【中文标题】在IOS8中使用共享扩展时如何获取源应用程序的bundleId【英文标题】:How to get bundleId of the source app when using share extension in IOS8 【发布时间】:2015-02-11 11:20:25 【问题描述】:

我想知道哪个应用调用了共享扩展来将图像共享给我的应用(它的 bundleId 或 appName)。但我发现没有办法做到这一点。 NSExtensionContext 中没有关于源应用程序的信息。我将不胜感激。

【问题讨论】:

【参考方案1】:

实现您的要求:

#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 我在这里也找到了这个值:github.com/nst/ios-Runtime-Headers/blob/master/Frameworks/…【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

你也可以这样做,

在 Xcode 中,选择您的项目,然后选择您的目标(您应该只有一个),然后选择“信息”选项卡。您应该能够在那里看到捆绑标识符。

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

How to get bundle ID?

【讨论】:

以上是关于在IOS8中使用共享扩展时如何获取源应用程序的bundleId的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS8 中如何设置私有文档目录作为存储提供程序应用程序扩展正在使默认文档目录共享?

iOS8扩展插件开发配置

iOS8 扩展:将 CoreData 与包含的应用程序同步

在 iOS 共享扩展中使用动态 Javascript

Swift 中的 iOS 共享扩展抓取 URL

如何使用 XMPP ios8 获取最后一个对话用户?