Share Extension에서 애플리케이션에 표시되지 않는 문제 해결

App Extension의 Share Extension은 현재 열려 있는 페이지의 기사와 데이터를 공유하는 편리한 기능을 제공합니다.
Qita, 블로그 등을 참고하면서 기능을 시행했지만, 왠지 특정 앱에서 자신의 앱이 표시되지 않아 빠져들었다.
스택오버플로우에서도 부드러운 답변을 찾지 못해 자신이 조사한 내용을 공유했다.나는 같은 고민을 하는 사람을 도울 수 있었으면 좋겠다고 생각한다.

일반적인 방법은 다음과 같다.


최초로 참고한 보도는 여기에 있다.
Share Extension에서 데이터를 공유하는 방법에 대해서는 @KosukeQiita뉴스.를 참조했습니다.감사합니다.
나는 이렇게 하면 곧 끝날 줄 알았어...

1. 할 수 없는 일


위의 링크에서 할 수 있는 응용과 할 수 없는 응용이 있음을 발견하였다.
공유 아이콘을 누르면 공유 가능한 앱이 표시됩니다. 왜냐!자신의 프로그램을 표시할 수 없습니다.(내 경우는 Google Drive Application!)

원인을 조사하면 Stack OverFlow도 같은 고민을 하는 사람이 있다!
StackOverFlow의 질문입니다.

2. 표시되지 않는 이유는?


이것은 경험을 바탕으로 한 말입니다(더 자세한 사람은 지적해 주십시오.) 0.를 참고하십시오.공유 가능 조건을 정의하여 공유 조건을 자세히 정의할 때는 사용자 정의(SUBQUERY)가 필요합니다.
아래 애플의 공식 문서에도 설명이 있다.
아래 설명서에 따라 사용자 정의 SUBQUERY를 만들면 될 것 같습니다.

3. SUBQUERY 시도


일단 만들면 귀찮아서 뭐든지 할 수 있는'TRUEPREDICATE'를 해보니 자기 앱이 나온다.이렇게 되면 SUBQUERY가 되는 방법이 나올 거예요!
(이 설정은 출시 시 사용할 수 없을 것 같으며 SUBQUERY를 제작할 수 있다면 변경이 필요하다.)
검색 키워드를 SUBQUERY로 바꾸면 역시 Stack OverFlow에 있습니다.
[슈비큐리가 만든 선배님의 질문!]
https://stackoverflow.com/questions/35935804/ios-share-extension-with-custom-subquery-for-nsextensionactivationrule
SUBQUERY를 만들려면 Predicate 문법에 대한 지식이 필요하다고 합니다.
아래 링크를 참조하십시오.
Predicate 구문 정보
그나저나 필립 스타일 일람표는 여기를 참고하세요.
SUBQUERY에 필요한 FILY 유형 요약
내가 만든 SUBQUERY.이렇게 하면 해결된다.
NSExtension ActivationRule 키에 작성된 SUBQUERY를 추가합니다.

이렇게 하면 보기 싫다.소스가 이렇게 보여요.

NSExtension ActivationRule에 삽입된 코드

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        (
            ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.text"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.adobe.pdf"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.presentation"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.composite-content"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.audio"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.movie"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
            || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data"
        )

    ).@count == $extensionItem.attachments.@count
).@count == 1

4. 끝


기사를 쓰자마자 링크가 되었다.만약 무슨 잘못이 있으면 반드시 지적해 주십시오.

좋은 웹페이지 즐겨찾기