如果用户未登录,iOS共享扩展名显示警报吗?

时间:2018-07-25 09:20:50

标签: ios objective-c ios8-share-extension

我已添加共享扩展名以上传文件。

但是我想在用户未登录应用程序时停止打开共享扩展名,并显示类似于来自Facebook的Messenger应用程序的警报。

Facebook messenger app

我该怎么做 注意:我知道如何检查用户是否已登录或未使用应用程序组。但是我想在打开共享扩展名并显示警报之前进行检查。就我而言,它首先打开共享扩展名,然后显示警报。我想在打开共享扩展名之前进行检查

2 个答案:

答案 0 :(得分:1)

您应使用应用组在主应用和扩展应用之间进行通信。 (共享数据:NSUserDefaults和应用组 )

您可以像这样在主应用程序中添加数据:-

let mySharedDefaults = UserDefaults(suiteName: "group.yourValue")
     mySharedDefaults?.set(false, forKey: "isLoggedIn")

然后您可以在扩展程序中获取类似的数据

   let mySharedDefaults = UserDefaults(suiteName: "group.yourValue")
         if let isLoggedIn = mySharedDefaults?.value(forKey: "isLoggedIn") as? Bool {
            if !isLoggedIn {
                     showAlert()
           }
}

Refer this用于实施应用程序组

答案 1 :(得分:1)

除了直接打开共享扩展名的自定义视图外,您还可以先使用Alert来检查用户是否登录,然后如果用户已登录,则可以继续用动画呈现自定义视图。

您可以通过在ShareViewController: SLComposeServiceViewController上添加以下方法来做到这一点。

override func viewDidLoad() {
    // check if user logged in or not here and if not below code will be executed.
    self.loginAlertController = UIAlertController(title: "Please launch application from the home screen before continuing.", message: nil, preferredStyle: .alert)
    let onOk = UIAlertAction(title: "OK", style: .destructive) { alert in
        self.extensionContext?.cancelRequest(withError: NSError(domain: "loging", code: 0, userInfo: nil))
    }
    loginAlertController!.addAction(onOk)
    present(loginAlertController!, animated: true, completion: nil)
}