ios - 如何仅从共享扩展启动应用程序而无需在 Swift 中弹出弹出窗口?

标签 ios iphone swift ios8-share-extension

我是 iOS 应用程序开发的初学者,我想通过从另一个应用程序复制链接来启动我的应用程序。单击它添加共享扩展,它显示弹出窗口。 但我的要求是它不应显示弹出窗口并在单击我的共享扩展程序时直接打开我的应用程序。

我做了什么:

1) 在 info.plist 中添加规则

<dict>
    <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
    <integer>1</integer>
</dict>

屏幕短片:

enter image description here 请有人帮我解决这个问题。 谢谢

更新:添加以下代码后弹出窗口没有出现,但我的应用程序没有打开

objective-c :

    - (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

swift :

override func isContentValid() -> Bool {
        // Do validation of contentText and/or NSExtensionContext attachments here
        return true
}
override func didSelectPost() {
        self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
    }
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
    })
}

最佳答案

根据 viewDidLoad 的请求调用完成应该足够了

override func viewDidLoad() {

    super.viewDidLoad()
    ⋮
    // custom logic
    ⋮
    self.extensionContext?.completeRequest(returningItems: [], completionHandler: nil)
}

关于ios - 如何仅从共享扩展启动应用程序而无需在 Swift 中弹出弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51626406/

相关文章:

ios - INSendPaymentIntent 处理完成后打开应用程序 - SiriKit Intents

ios - 切换到横向,自动约束在错误的角落

iphone - 使用获取的结果 Controller 进行排序会导致部分标题错误

ios - 名称为一半字符串和一半变量的调用数组 : Dynamic References

json - 如何将 SwiftyJson 字符串数组保存到字符串数组中

ios - Enterprise Distribution 在 Swift App 中与 iOS8 的配合不佳

ios - 在我自己创建的 pod 中添加 Firebase 作为依赖项

iphone - 在 iphone 中使用 Brautaset Json 框架时出错

iPhone:隐藏工具栏

ios - Swift iOS 应用程序中位于 MapView 之上的 UITableView