Language/iOS,AOS
iOS Swift 공유하기
건담아빠
2024. 5. 20. 09:11
iOS 앱에서 공유하기 기능을 추가할 일이 생겼다, 다음을 위해 정리해두자.
1. React
class Common {
...
static share(text) {
if (Util.Browser.isAndroidApp()) {
try {
AndroidBridge.share(text);
} catch (e) {}
return true;
} else if (Util.Browser.isIosApp()) {
const message = {
action: 'share',
text: text,
};
window.webkit.messageHandlers.IosBridge1.postMessage(message);
return true;
}
return false;
}
...
}
2. Swift
...
// MARK: - iOS Bridge
// 웹 액션 정의 : WebAction을 구분하는데 사용되는 타입
enum WebAction: String {
case setAppData
case getAppData
case getAppVersion
case getVersionCode
case loginWithKakao
case loginWithNaver
case loginWithFacebook
case loginWithApple
case windowFullPDF
case windowFull
case windowFrame
case windowClose
case windowCloseAndOpenerReload
case getNotificationId
case getDeepLink
case share
}
extension MainViewController: WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
guard message.name == IOS_BRIDGE_NAME,
let messages = message.body as? [String: Any],
let action = messages["action"] as? String else { return }
let webAction = WebAction(rawValue: action)
// 공유할 text
Utils.Log("@@@@@@@@@@@@@@@@@@@@@@@ \(action)")
switch webAction {
...
case .share:
guard let text: String = messages["text"] as? String else { return }
Utils.Log("##################### text : \(text)")
var shareItems = [String]()
shareItems.append(text)
let activityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
self.present(activityViewController, animated: true, completion: nil)
...
default:
Utils.Log("undefined action")
}
}
}
...
생각보다 너무 쉽게 되어버렸다..
참조