Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Chore] #209 - 사파리 외에 다른 앱에서도 Share Extension 대응 #210

Merged
merged 2 commits into from
Oct 4, 2024

Conversation

mini-min
Copy link
Member

@mini-min mini-min commented Oct 1, 2024

✨ 해결한 이슈

🛠️ 작업내용

1. NSExtensionActivationSupportsWebURLWithMaxCount

기존 쉐어 익스텐션 Info.plst에는 NSExtensionActivationSupportsURLWithMaxCount로 권한을 주고 있었는데, 해당 권한은 Safari의 URL에만 반응하고 있다는 문제를 발견했습니다.
NSExtensionActivationSupportsWebURLWithMaxCount이라는 속성으로 변경해 WebURL 기반으로 되어있는 타앱에서도 Share Sheet에 표출될 수 있도록 변경했습니다!

구현 내용 사파리 네이버 카카오
�Share Sheet

2. NSExtensionActivationSupportsText

네이버 앱의 경우에는 WebURL이 아니라 Text로 넘어오더군요..
로그로 확인해보니 NSExtensionItem의 배열로 URL에 대한 내용(웹 페이지 타이틀)+URL 주소 형태로 넘어오고 있었기에
단순히 WebURL로 받게되면 받아오지 못하던 문제가 있었습니다.
스크린샷 2024-10-01 오후 3 20 01

기존 Share Extension의 getUrl() 메서드를 NSExtensionItem 배열을 반복하면서 "public.url" 타입을 인식해서 처리할 수 있도록 코드를 수정했습니다!

func getUrl() {
if let item = extensionContext?.inputItems.first as? NSExtensionItem,
let itemProviders = item.attachments {
itemProviders.forEach { itemProvider in
if itemProvider.hasItemConformingToTypeIdentifier("public.url") {
itemProvider.loadItem(forTypeIdentifier: "public.url") { [weak self] (url, error) in
if let shareURL = url as? URL {
self?.urlString = shareURL.absoluteString
} else {
print("Error loading URL: \(error?.localizedDescription ?? "")")
}
}
}
}
}
}

저 혼자서 Share Sheet가 동작하는 모든 상황을 대응할 수 없어서,
타 앱에서 토스터를 Share Sheet로 사용해 링크 저장하는 경우 사례를 나중에 QA때 받아보는 것도 좋을 것 같습니다 ^__^

(어떤 앱은 URL만 넘기고, 어떤 앱은 URL을 Text로 넘기고, 네이버는 두개 다 넘기고 이런 식으로..)

✅ Checklist

  • 필요없는 주석, 프린트문 제거했는지 확인
  • 컨벤션 지켰는지 확인

@mini-min mini-min added 🔧 Chore Feat 이외에 코드 수정, 내부 파일 수정, 애매한 것들이나 잡일은 이걸로! 🐻‍❄️ 민재 민재 선생님 작업 labels Oct 1, 2024
@mini-min mini-min self-assigned this Oct 1, 2024
Copy link
Contributor

@Genesis2010 Genesis2010 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

String 으로 넘어오는 이슈가 있을 줄은 몰랐네요...
앞으로는 이런 부분까지 고민하는 시야를 가져야겠습니다..

또한 선제적으로 얼른 적용해서 버전 업데이트 하는게 좋을거 같습니다!
먼저 찾아주셔서 감사해요!

@mini-min mini-min merged commit 102227e into develop Oct 4, 2024
@mini-min mini-min deleted the chore/#209 branch October 4, 2024 02:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐻‍❄️ 민재 민재 선생님 작업 🔧 Chore Feat 이외에 코드 수정, 내부 파일 수정, 애매한 것들이나 잡일은 이걸로!
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Chore] ShareExtension 사파리 제외한 타앱에서도 대응
2 participants