我是iOS应用开发的入门者,我想在另一个应用的复制链接上启动我的应用。单击时添加共享扩展名,它显示弹出窗口。 但是我的要求是,它不应显示弹出窗口,而应在单击共享扩展名后直接打开我的应用程序。
我做了什么:
1)在info.plist中添加了规则
#N/A
短屏:
更新:添加以下代码后,弹出窗口不会出现,但我的应用无法打开
目标C:
<dict>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
迅速:
- (BOOL)isContentValid {
return YES;
}
#ifdef HIDE_POST_DIALOG
- ( NSArray * ) configurationItems
{
return @[];
}
#endif
- ( void ) didSelectPost
{
#ifdef HIDE_POST_DIALOG
return;
#endif
}
CGFloat m_oldAlpha = 1.0;
#ifdef HIDE_POST_DIALOG
- ( void ) willMoveToParentViewController: ( UIViewController * ) parent
{
m_oldAlpha = [ self.view alpha ];
[ self.view setAlpha: 0.0 ];
}
#endif
#ifdef HIDE_POST_DIALOG
- ( void ) didMoveToParentViewController: ( UIViewController * ) parent
{
// Restore the original transparency:
[ self.view setAlpha: m_oldAlpha ];
}
#endif
#ifdef HIDE_POST_DIALOG
- ( id ) init
{
if ( self = [ super init ] )
{
[ [ NSNotificationCenter defaultCenter ] addObserver: self selector: @selector( keyboardWillShow: ) name: UIKeyboardWillShowNotification object: nil ];
}
return self;
}
#endif
#ifdef HIDE_POST_DIALOG
- ( void ) keyboardWillShow: ( NSNotification * ) note
{
[ self.view endEditing: true ];
}
#endif
答案 0 :(得分:0)
如果要隐藏对话框,则需要在viewDidLoad中处理数据,而不是didSelectPost,然后使用以下代码重定向应用程序:
self.dismiss(animated: false, completion: {
let _ = responder?.perform(selectorOpenURL, with: url)
self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
})
请确保您设置了所有标志和url方案。
答案 1 :(得分:0)
根据请求从viewDidLoad调用完成应该足够了
override func viewDidLoad() {
super.viewDidLoad()
⋮
// custom logic
⋮
self.extensionContext?.completeRequest(returningItems: [], completionHandler: nil)
}
答案 2 :(得分:0)
从viewDidLoad中执行此操作,但是您需要设置一个小计时器,否则它将不起作用:
override func viewDidLoad() {
super.viewDidLoad()
Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(self.didSelectPost), userInfo: nil, repeats: false)
}
答案 3 :(得分:-2)
将此添加到您的共享视图控制器中。不客气。
override func viewDidAppear(_ animated: Bool) {
self.view.transform = CGAffineTransform(translationX: 0, y: self.view.frame.size.height)
UIView.animate(withDuration: 0.25, animations: { () -> Void in
self.view.transform = .identity
})
}