mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-10-10 22:38:44 +02:00
* fix(ios): make `init_plugin_*` entry points public so release builds link on Xcode 27 Xcode 27's SwiftPM (Swift Build) gives non-public @_cdecl functions local visibility in release builds, so each plugin's init_plugin_* is undefined when Rust links. Mark them public in the 11 plugins with an iOS part. See tauri-apps/tauri#16130 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Apply suggestion from @lucasfernog --------- Co-authored-by: takakix2 <1370181+takakix2@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Lucas Fernandes Nogueira <lucas@tauri.app>
47 lines
1.1 KiB
Swift
47 lines
1.1 KiB
Swift
// Copyright 2019-2023 Tauri Programme within The Commons Conservancy
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
import Foundation
|
|
import SafariServices
|
|
import SwiftRs
|
|
import Tauri
|
|
import UIKit
|
|
import WebKit
|
|
|
|
struct OpenArgs: Decodable {
|
|
let url: String
|
|
let with: String?
|
|
}
|
|
|
|
class OpenerPlugin: Plugin {
|
|
@objc public func open(_ invoke: Invoke) throws {
|
|
do {
|
|
let args = try invoke.parseArgs(OpenArgs.self)
|
|
if let url = URL(string: args.url) {
|
|
if args.with == "inAppBrowser" {
|
|
DispatchQueue.main.async {
|
|
let safariVC = SFSafariViewController(url: url)
|
|
self.manager.viewController?.present(safariVC, animated: true)
|
|
}
|
|
} else {
|
|
if #available(iOS 10, *) {
|
|
UIApplication.shared.open(url, options: [:])
|
|
} else {
|
|
UIApplication.shared.openURL(url)
|
|
}
|
|
}
|
|
|
|
}
|
|
invoke.resolve()
|
|
} catch {
|
|
invoke.reject(error.localizedDescription)
|
|
}
|
|
}
|
|
}
|
|
|
|
@_cdecl("init_plugin_opener")
|
|
public func initPlugin() -> Plugin {
|
|
return OpenerPlugin()
|
|
}
|