요구 사항

사전 지식

  • AEM Mobile 이해
  • 온디맨드 포털을 통한 콘텐츠 제작 및 게시 관련 지식
  • On-Demand Services API 사용 경험

요구 제품

  • AEM Mobile
  • On-Demand Services API에 대한 액세스
  • 공유 콘텐츠

공유 콘텐츠 소개

On-Demand Services API(이전의 “Content Producer Service API”)를 통해 서드 파티 개발자는 온디맨드 서비스와의 통합을 추진할 수 있습니다. 이 서비스를 통해 다음과 같은 작업이 가능합니다.

  • 아티클 관리
  • 컬렉션 관리
  • 제품 관리
  • 푸시 알림 관리

여러 HTML 기반 아티클을 게시하려면 이러한 아티클 가운데 공유된 번들 콘텐츠에 대해 공유 콘텐츠 API를 사용할 수 있습니다. 이 문서에서는 공유 콘텐츠를 사용하는 방법에 대해 설명합니다.

AEM Mobile에서 개별 아티클을 게시할 수 있습니다. 각각의 아티클은 해당 article_name으로 식별됩니다. 공유 콘텐츠를 설정한다면 동일한 여러 HTML 기반 아티클을 통해 CSS 및 Javascript 파일을 사용할 수 있습니다.

공유 콘텐츠를 사용하지 않으면 각각의 HTML 아티클에는 CSS와 JS 파일이 포함되어야 합니다.

이 예에서 css/style.css와 js/main.js 파일은 모든 아티클에 중복되어 오버헤드가 발생합니다. 공유 콘텐츠를 사용하면 이 파일들은 하나의 sharedContent 엔티티에 추가되어 각 아티클별로 참조할 수 있습니다.

공유 콘텐츠를 사용하면 공유 파일들은 하나의 엔티티에 저장되고 여러 아티클에서 참조할 수 있습니다.

동적 공유 콘텐츠 이해

AEM Mobile 2017.2 릴리스(2017년 2월 6일)에 도입된 동적 공유 콘텐츠를 통해 공유 콘텐츠를 참조하는 아티클을 업데이트하지 않고도 공유 콘텐츠를 업데이트할 수 있습니다. 이번 릴리스 이전까지는 sharedContent 엔티티를 사용하려면 공유 콘텐츠와 해당 콘텐츠에 링크된 아티클을 모두 업데이트해야 했습니다. 앱 사용자들은 이후 “업데이트” 프롬프트를 탭하여 업데이트를 받아야 했습니다. 이번 릴리스를 통해 새로운 dynamicSharedContent 엔티티를 사용하여 공유 콘텐츠를 업로드할 수 있습니다. 동적 공유 콘텐츠를 업데이트하고 게시하면 해당 변경 내용이 모든 참조 아티클에 자동으로 적용됩니다. 더 이상 참조 아티클을 업데이트할 필요가 없으며, 사용자들은 더 이상 업데이트 프롬프트를 탭할 필요가 없습니다.

sharedContentdynamicSharedContent 워크플로 모두 지원됩니다. 이 섹션은 동적 공유 콘텐츠 사용을 참조합니다. 이전의 공유 콘텐츠 워크플로를 사용하려는 경우에는 sharedContentdynamicSharedContent로 적절하게 대체하십시오.

 

공유 콘텐츠 사용

  1. 각 아티클용 아티클 엔티티를 만듭니다.

  2. 아티클 콘텐츠(manifest.xml로 압축됨)를 통합 서비스로 업로드합니다. 자세한 내용은 AEM Mobile용 HTML 아티클 제작을 참조하십시오.

  3. 공유 콘텐츠 엔티티를 만듭니다. 요청 본문에는 표준 엔티티 메타데이터 속성이 포함되어야 합니다. 다음 예에서 필드 “sc_one”은 dynamicSharedContent 엔티티 이름이라는 점을 참고하십시오.

    PUT /publication/<projectID>/dynamicSharedContent/sc_one
  4. 결과적으로 생성된 엔티티(응답의 일부)에서 contentUrl을 얻습니다.

    {
        …
        "_links": {
            …
            "contentUrl": "/publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion1>/"
        }
    }
  5. 이 contentUrl에 대한 공유 리소스를 업로드합니다.

    예:

    PUT /publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion1>/css/style.css
    PUT /publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion1>/js/main.js
  6. dynamicSharedContent 엔티티의 콘텐츠를 실링(커밋)합니다.

    PUT /publication/<projectId>/dynamicSharedContent/sc_one;version=<entVersion>/contents
  7. 실링된 엔티티(응답의 일부)에서 업데이트된 contentUrl을 얻습니다.

    {
        …
        "_links": {
            …
            "contentUrl": "/publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion2>/"
        }
    }
  8. 아티클에서 공유 contetnUrl과 관련된 심볼릭 링크 에셋을 업로드합니다.  다음 예에서 필드 article_one은 아티클 엔티티 이름에 사용되고 필드 shared는 공유 콘텐츠를 포함하는 폴더 이름임을 참고하십시오. 우선 GET 호출을 수행하여 최신 dynamicSharedContent 엔티티 버전을 얻습니다. 다음으로 공유 리소스를 업데이트합니다.

    PUT /publication/<projectId>/article/article_one/contents;contentVersion=<cVersion3>/dynamicShared
    Content-Type:  application/vnd.adobe.symboliclink+json
    {"href": "/publication/<projectId>/dynamicSharedContent/sc_one/contents;contentVersion=<cVersion2>/"}
  9. 동일 아티클에서 다른 공유 콘텐츠 엔티티에 대한 추가 참조를 설정합니다.

    PUT /publication/<projectId>/article/article_one/contents;contentVersion=<cVersion3>/fonts
    Content-Type:  application/vnd.adobe.symboliclink+json
    {"href": "/publication/<projectId>/dynamicSharedContent/sc_two/contents;contentVersion=<cVersion2>/"}

    콘텐츠 유형 헤더는 이 리소스를 심볼릭 링크로 식별하고, 리소스 이름(예시의 “article_one”)은 심볼릭 링크의 소스를 식별하며, 업로드한 에셋의 콘텐츠는 대상을 식별한다는 점을 참고하십시오.

  10. 참조 엔티티의 콘텐츠를 실링(커밋)합니다.

     

    PUT /publication/<projectId>/article/article_one;version=<entVersion>/contents

    이제 article_one 내의 콘텐츠 에셋은 단순히 “shared”(sc_one에 대해)와 “fonts”(sc_two에 대해) 접두사를 사용하여 dynamicSharedContent 엔티티에서 콘텐츠를 참조할 수 있습니다. dynamicSharedContent는 바로 위의 디렉터리인 HTML 아티클에 위치합니다.

    article_one의 HTML 콘텐츠는 다음과 같이 Javascript와 CSS를 참조합니다.

    <script src="../shared/js/logic.js"></script>
    <link rel="stylesheet" type="text/css" href="../shared/css/style.css">

    글꼴은 다음과 같은 방법으로 만들 수 있습니다.

    @font-face {
      font-family: "myFirstFont";
      src: "url(../fonts/Exotic_Regular.woff");
    }
  11. 비-Preflight 앱용 dynamicSharedContent 엔티티를 게시하거나 Preflight 활성 앱에 대한 프리플라이트를 트리거하여 모든 참조 아티클에 대한 dynamicSharedContent 엔티티의 변경 내용을 전파합니다.

    PUT /job
    {
        "workflowType": "publish",
        "entity": {
            "/publication/dynamicSharedContent/sc_one;version=<entVersion>"
        }
    }

기존 공유 콘텐츠를 동적 공유 콘텐츠로 마이그레이션

새로운 공유 콘텐츠 기능은 기존 공유 콘텐츠 워크플로에 영향을 주지 않습니다. 동적 공유 콘텐츠의 장점을 활용하려면 기존 공유 콘텐츠를 변경하여 새로운 동적 워크플로를 활성화해야 합니다.

  1. dynamicSharedContent 엔티티를 새로 만듭니다.

  2. 이전 sharedContent 엔티티의 모든 에셋을 새로운 dynamicSharedContent 엔티티에 추가하고 해당 엔티티의 콘텐츠를 실링합니다.

  3. 각 아티클의 심볼릭 링크(symlink) 파일을 업데이트하여 실링된 버전의 새로운 dynamicSharedContent 엔티티를 가리키도록 합니다.

  4. 프로젝트 콘텐츠를 미리 확인(프리플라이트)합니다. 아티클에서 동적 콘텐츠를 사용할 수 있어야 합니다.

  5. 새로운 공유 콘텐츠 기능은 기존 공유 콘텐츠 워크플로에 영향을 주지 않습니다. 동적 공유 콘텐츠의 장점을 활용하려면 기존 공유 콘텐츠를 변경하여 새로운 동적 워크플로를 활성화해야 합니다.

    게시할 준비가 되면 동적 공유 콘텐츠를 게시합니다. 그런 다음 공유 콘텐츠를 참조하는 아티클을 게시합니다.

    공유 콘텐츠를 업데이트하려면 동적 공유 콘텐츠의 에셋을 추가 또는 변경하고 해당 엔티티를 실링합니다. 공유 콘텐츠를 참조하는 아티클을 미리 확인한 다음 동적 공유 콘텐츠를 게시합니다. 참조 아티클에 변경 내용이 반영됩니다.

참고:

지금은 동적 공유 콘텐츠를 게시 취소할 수 없습니다. 이 옵션이 지원되기 전까지 임시 해결 방법은 동적 공유 콘텐츠에서 파일 콘텐츠를 모두 제거하고 다시 게시하는 것입니다. 참조 아티클이나 동적 배너에서 해당 동적 공유 콘텐츠로의 심볼릭 링크(symlink)를 제거하는 방법을 사용할 수도 있습니다.

공유 콘텐츠 관련 사항

아티클의 공유 콘텐츠를 사용하고 있다면 뷰어는 아티클을 렌더링하기 전에 완전한 공유 콘텐츠 엔티티를 다운로드해야 합니다. 모든 공유 콘텐츠를 포함하는 하나의 큰 엔티티를 사용하는 대신 여러 공유 콘텐츠 엔티티를 만드는 것이 좋습니다.

콘텐츠를 사용할 수 있는 경로는 8단계와 9단계에서와 같이 심볼릭 링크 생성에 따라 달라집니다. 8단계에서 sc_one은 shared 경로에서 참조됩니다. 9단계에서 sc_two는 fonts 경로에서 참조됩니다. Unix 운영 시스템에서는 공유 콘텐츠가 심볼릭 링크를 사용하여 작업하는 방식을 비교할 수 있습니다.

공유 콘텐츠는 On-Demand Services API를 통해서만 관리할 수 있습니다. 현재 온디맨드 서비스 포털에는 공유 콘텐츠를 관리하기 위한 사용자 인터페이스가 없습니다.

On-Demand Services API에는 sharedContent에 대한 예제가 포함되어 있습니다. /sharedContent 폴더를 확인하십시오.

이 작업에는 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License의 라이센스가 부여되었습니다.  Twitter™ 및 Facebook 게시물은 Creative Commons 약관을 적용받지 않습니다.

법적 고지 사항   |   온라인 개인 정보 보호 정책