我已添加共享扩展名以上传文件。
但是我想在用户未登录应用程序时停止打开共享扩展名,并显示类似于来自Facebook的Messenger应用程序的警报。
我该怎么做 注意:我知道如何检查用户是否已登录或未使用应用程序组。但是我想在打开共享扩展名并显示警报之前进行检查。就我而言,它首先打开共享扩展名,然后显示警报。我想在打开共享扩展名之前进行检查
答案 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)
}