앱 내에서 새로운 친구를 맺을 때, 링크를 통해 친구를 맺고, 만약 다운받지않은 유저라면 앱스토어로 이동하도록 구현을 해야했다. 그러면 어떻게 공유할 수 있을까? 카카오 API의 방법도 있지만 애플로그인으로 하는 경우에는 사용하지 못한다. 그래서 우리는 iOS16이전까지는 위의 기능을 UIKit을 이용해야 했지만 이후에서는 ShareLink를 통해 자체적으로 SwiftUI에서 사용할수 있기에 위의 기능을 사용하기로 했다.
아주 쉽다. 그 전에 ShareLink를 통해 데이터를 내보낼 수 있는데 해당 데이터(Item) Transferable 프로토콜을 준수해야한다.
- ShareLink(item: subject: message:): subject는 제목으로 공유대상이 이메일, 메시지 앱 등일때 필드들이 미리 채워진다.
- ShareLink(item:subject:message:preview:): 데이터를 공유하기 전 인터페이스에서 데이터를 미리 확인할 수 있다.
- ShareLink(items:subject:message:): 위에꺼랑 다르게 여러데이터 공유할때 사용
그런데 주의해야할께 있다...주로 우리가 초대링크를 통해 공유할때 카카오톡을 제일 많이 사용할 것이다. 하지만 카카오톡에서는 item에 넣은 url을 인식하지 못한다... 그래서 message에 넣는 방식으로 해야할꺼 같다. 다음은 나의 코드다.
ShareLink(item: URL(string: "https://naver.com")!, subject: Text("친구를 맺어요"), message: Text("선호가 당신과 친구가 되고 싶어요! 링크를 눌러 앱을 설치하고 친구가 되어보세요! \n\nhttp://boletto.site"),preview: SharePreview("Boleto", image: Image("logo"))) {
Image(systemName: "link")
.foregroundStyle(.white)
.frame(width:45,height:45)
.background(Color.gray1 ,in: RoundedRectangle(cornerRadius: 12))
}
하지만 문제가 있다.
Received port for identifier response: <(null)> with error:Error Domain=RBSServiceErrorDomain Code=1 "Client not entitled" UserInfo={RBSEntitlement=com.apple.runningboard.process-state, NSLocalizedFailureReason=Client not entitled, RBSPermanent=false}
shareLink를 클릭할때마다 이 빨간 경고가 뜬다. 근데 웃긴건 구글링을 해보면 작년부터 계속 나온 에러라는 것이다.
안타깝게도...
ㅇㅇ..다들 해결을 못하고 그냥 냅뒀다고 한다ㅠㅠㅠ 다들 시간낭비하지 않도록 적었다.
하...이번엔 두번째 문제가 나왔다 저렇게 이제 그냥 메시지에다가 링크를 넣었더니
elapsedCPUTimeForFrontBoard couldn't generate a task port
Error creating the CFMessagePort needed to communicate with PPT.
Failed to load item provider <NSItemProvider: 0x30055ad80> {types = (
"public.url"
)}, falling back to original item provider
요런 에러가 뜨네..>? 카카오톡으로 url이 전송이 안된다. 메시지나 메일은 잘된다. 근데 무한 실험하다가 발견한 특이한점 sharePreview가 없으면 링크가 전송이 잘된다. 아직 이글에 대한 자세한 설명은 없지만 내 추측으로는 sharePreview의 string타입과 뭔가 충돌이 일어나는 것같다. 그래서 만약 카톡이나 다른 앱에 Url이 전송이 안된다면 나처럼 삽질하지말고 프리뷰를 빼보는 것을 추천한다.
'SWIFTUI' 카테고리의 다른 글
Preference Key (0) | 2024.11.25 |
---|---|
TCA- TestingCode (1) | 2024.10.26 |
TCA-Dependency...DI,DIP를 곁들인 (2) | 2024.09.20 |
TCA-3번째시간 Dependency (0) | 2024.07.19 |
TCA(2)-Store, ViewStore& Binding (4) | 2024.07.16 |