我想实现应用程序扩展,但我无法决定是否应将其实现为共享扩展或操作扩展.
文档没有说明差异,只是这样:
是否存在技术差异(例如,Action扩展是否允许我执行Share扩展所不具备的功能),还是仅仅是Apple希望您遵循的约定,以减少对用户的混淆?
似乎至少有一个区别是,如果您想要非UI操作,则必须选择Action而不是Share扩展.
还有什么区别?
我正在寻找的事情的例子:
这个错误由WhatsApp团队于2016年5月23日修复(版本号2.16.4).
无法UIActivityViewController
与WhatsApp 共享NSString对象.
我尝试使用下面的代码分享.但是,一旦从列表中选择了联系人,它就会显示一条警告,显示" This item cannot be shared. Please select a different item.
"
码
NSString *shareText = @"Temp text to share";
NSArray *itemsToShare = @[shareText];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
Run Code Online (Sandbox Code Playgroud)
将WhatsApp更新到版本2.16.2后,我遇到了这个问题
我正在为我的iOS应用程序构建共享扩展,我无法使用默认设置SLComposeServiceViewController
,所以我创建了(在故事板中)基本的UIViewController
并嵌入在导航控制器中.我得出现它,解雇它等但它总是全屏.我想让它看起来更像是一个对话框.我尝试self.preferredContentSize
在我的视图控制器上使用,尝试Use Preferred Explicit Size
在Interface Builder中的导航控制器,但它不起作用.
我想为我的应用创建一个Android Style共享功能.我创建了一个共享扩展,当你在股票照片应用程序中选择图片并按下共享时,它会被调用.现在我想将这些图片发送到主应用程序并在那里处理.我现在的问题是:
我正在尝试为我的应用程序创建共享扩展,这需要从扩展程序登录Google.我已经设置了共享组密钥链,并且能够从主应用程序写入并读取扩展目标.但我无法从扩展程序登录Google,因为GIDSignIn.sharedInstance().hasAuthInKeychain()
始终返回false.
有没有办法从扩展程序登录Google,我该怎么做?任何帮助,将不胜感激.
我有一个iOS 8共享扩展程序,用于从Web浏览器发布内容.如果用户从未通过包含应用程序登录,则需要提示用户登录.
Pinterest似乎支持快速切换到包含应用程序(我假设他们已经实现了共享扩展).
iOS文档表明只有今天的扩展可以打开包含应用程序.
有没有办法通过共享扩展快速切换到包含应用程序进行身份验证?
当我向项目添加共享扩展并将其归档警告时,我收到此警告:跳过复制阶段条带,二进制代码已签名:/ Users/xxxx/xxx/xxxx/Build/xxxx/Build/Intermediates/ArchiveIntermediates/xxxx/IntermediateBui ldFilesPath /UninstalledProducts/XXX.appex/XXXX
旧问题没有提供和洞察力来纠正这一点.所以我决定再问一次. 存档期间的警告在Xcode 6中使用iOS 8扩展的应用程序
有人可以解释为什么会这样吗?是因为扩展目标已经过代码签名了吗?如果是这样,如何解决?
我知道将"复制期间调试符号"设置为"否"可以清除此警告.但它实际上并没有解决问题.没有"剥离调试符号"的缺点是什么?因为无论我将其设置为YES还是NO,我的存档大小仍然相同
我为我的应用添加了一个共享扩展名,例如SAMPLE(已存在于应用商店中),称为SAMPLESHARE.每当用户说拍照并试图分享它时,我希望他们通过Open In功能的视图控制器,而不是从Apple获得Post对话,基本上绕过它.所以我试图在共享扩展和我的应用程序之间分享图片,创建一个在应用程序和插件之间共享的应用程序组,然后将文件路径传递给我的应用程序的应用程序委托的openURL.
所以在我的主要应用代表中我有
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [[SAMPLEExternalFileHandler shared] handleExternalFileURL:url];
}
Run Code Online (Sandbox Code Playgroud)
如果我有一个需要打开不同流的URL文件路径,我基本上每次都会检查它.
在我的SHAREEXTENSION中,我有
#import "ShareViewController.h"
#import <MobileCoreServices/UTCoreTypes.h>
//Macro to hide post dialog or not, if defined, will be hidden, comment during debugging
#define HIDE_POST_DIALOG
@interface ShareViewController ()
@end
@implementation ShareViewController
NSUInteger m_inputItemCount = 0; // Keeps track of the number of attachments we have opened asynchronously.
NSString * m_invokeArgs = NULL; // A string to be passed to your AIR app with information about …
Run Code Online (Sandbox Code Playgroud) 我了解我可以通过启用应用程序组和使用NSUserDefaults在我的共享扩展程序和其包含的应用程序之间共享数据(请参阅在iOS 8共享扩展程序和主应用程序之间共享数据).
但是,我存储的数据很敏感,所以我希望使用钥匙串.因此,用户将在包含应用程序中输入帐户信息,然后共享扩展将读取该数据以执行预期的共享操作.
有谁知道这是否可能?我的第一个破解建议扩展和包含应用程序具有单独的密钥链(在包含应用程序中使用密钥保存数据时,在尝试返回扩展中该密钥的数据时返回null).
谢谢!
PS使用Lockbox进行Keychain访问,但是如果它太过抽象而无法使其工作,我可能会抛弃它. https://github.com/granoff/Lockbox
我正在为我的应用开发共享扩展程序.一切都很好,但我面临一个主要问题,我的应用程序不是在共享照片应用程序共享菜单中.
下面是我的共享扩展的plist.
它没有显示在列表中,下面是截图:
但是当我选择更多选项时,将我的分机的开关设置为打开,现在它显示在列表中,但我需要每次都这样做,下面是屏幕截图:
每次我从X-Code运行扩展时,它都没有显示共享菜单,我需要进入更多选项,关闭再打开开关,然后才显示.它可以在共享菜单中每次显示吗?是否有任何我需要的plist或额外配置?
我需要你宝贵的建议.提前致谢.
更新:
我在iOS9中检查过它.它没有任何问题,工作正常.
ios ×8
ios8 ×5
cocoa-touch ×1
ios8.3 ×1
iphone ×1
keychain ×1
objective-c ×1
whatsapp ×1
xcode ×1