80 lines
3.1 KiB
Swift
80 lines
3.1 KiB
Swift
import Flutter
|
||
import UIKit
|
||
|
||
@main
|
||
@objc class AppDelegate: FlutterAppDelegate {
|
||
override func application(
|
||
_ application: UIApplication,
|
||
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
|
||
) -> Bool {
|
||
// 获取Flutter引擎
|
||
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
|
||
// 创建MethodChannel
|
||
let channel = FlutterMethodChannel(name: "com.chat.auu.snapchat_share/intent", binaryMessenger: controller.binaryMessenger)
|
||
|
||
// 设置方法调用处理器
|
||
channel.setMethodCallHandler { [weak self] (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
|
||
// 处理shareToSnapchat方法调用
|
||
if call.method == "shareToSnapchat" {
|
||
// 获取Flutter传递的text参数
|
||
let text = call.arguments as? [String: Any]? ?? [:]
|
||
let shareText = text?["text"] as? String ?? ""
|
||
// 调用分享方法
|
||
self?.shareToSnapchat(text: shareText, result: result)
|
||
} else {
|
||
// 方法未实现
|
||
result(FlutterMethodNotImplemented)
|
||
}
|
||
}
|
||
GeneratedPluginRegistrant.register(with: self)
|
||
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||
}
|
||
|
||
private func shareToSnapchat(text: String, result: @escaping FlutterResult) {
|
||
// 1. 构建Snapchat的分享URL
|
||
guard let snapchatUrl = URL(string: "snapchat://") else {
|
||
result(FlutterError(code: "INVALID_URL", message: "Snapchat URL无效", details: nil))
|
||
return
|
||
}
|
||
|
||
// 2. 检查设备是否安装了Snapchat
|
||
if UIApplication.shared.canOpenURL(snapchatUrl) {
|
||
// 构建分享参数(根据Snapchat的URL Scheme文档调整)
|
||
let shareParams = [
|
||
"text": text
|
||
]
|
||
|
||
// 3. 拼接分享URL(示例,具体参数请参考Snapchat官方文档)
|
||
var components = URLComponents(url: snapchatUrl, resolvingAgainstBaseURL: true)
|
||
components?.queryItems = shareParams.map { URLQueryItem(name: $0.key, value: $0.value) }
|
||
|
||
guard let finalUrl = components?.url else {
|
||
result(FlutterError(code: "URL_BUILD_FAILED", message: "Open Snapchat Fail", details: nil))
|
||
return
|
||
}
|
||
|
||
// 4. 打开Snapchat进行分享
|
||
if #available(iOS 10.0, *) {
|
||
UIApplication.shared.open(finalUrl, options: [:]) { success in
|
||
if success {
|
||
result(nil) // 分享成功
|
||
} else {
|
||
result(FlutterError(code: "SHARE_FAILED", message: "Open Snapchat Fail", details: nil))
|
||
}
|
||
}
|
||
} else {
|
||
// iOS 9及以下兼容
|
||
let success = UIApplication.shared.openURL(finalUrl)
|
||
if success {
|
||
result(nil)
|
||
} else {
|
||
result(FlutterError(code: "SHARE_FAILED", message: "Open Snapchat Fail", details: nil))
|
||
}
|
||
}
|
||
} else {
|
||
// 设备未安装Snapchat
|
||
result(FlutterError(code: "SNAPCHAT_NOT_INSTALLED", message: "Snapchat is not installed.", details: nil))
|
||
}
|
||
}
|
||
}
|