DEV Community

Cover image for 앱 컨텍스트 사용 방법

앱 컨텍스트 사용 방법

펍넙 앱 컨텍스트는 사용자, 채널, 멤버십 정보를 위한 서버리스 스토리지 메커니즘을 제공하여 복잡한 실시간 기능 개발을 간소화합니다. 앱 컨텍스트는 데이터가 변경될 때마다 이벤트를 트리거하여 앱을 실시간으로 업데이트할 수 있으며, 저장된 데이터는 일루미네이트, 펑션 및 기타 PubNub 서비스에서 사용하여 더 스마트한 의사 결정을 내릴 수 있습니다. 또한 코드가 필요 없는 직관적인 인터페이스를 통해 이 데이터를 관리할 수 있는 BizOps Workspace를 사용할 수도 있습니다.

앱 컨텍스트란 무엇인가요?

앱 컨텍스트 (이전의 오브젝트)를 사용하면 다음을 수행할 수 있습니다:

  • 애플리케이션의 사용자 및 채널과 이들 간의 관계에 의미를 부여합니다.
  • 모든 엔티티에 대한 메타데이터를 서버에 저장하여 클라이언트에 글로벌 소스를 간편하게 제공할 수 있습니다. 사용자는 사람을 나타낼 필요는 없으며, 대신 사용자 개체 내에 디바이스 상태를 저장하는 것이 일반적입니다.
  • 객체의 값이 변경될 때마다 즉각적인 실시간 이벤트를 수신합니다.

모든 애플리케이션에서 앱 컨텍스트를 사용할 수 있지만 특히 채팅 솔루션을 만드는 개발자에게 인기가 높습니다.

앱 컨텍스트는 사용자채널에 대한 추천 필드 세트와 이들 간의 멤버십에 대한 추천 필드를 제공합니다. 이러한 필드의 대부분은 선택 사항이므로 어떤 필드를 채울지 선택할 수 있으며, 사용자 지정 필드를 직접 제공할 수도 있습니다.

Diagram showing user management, memberhip, channel management

앱 컨텍스트 사용 사례

앞서 언급했듯이 앱 컨텍스트는 특히 채팅 솔루션을 만드는 개발자들에게 인기가 있지만 다양한 사용 사례에서 사용할 수 있습니다:

  • 채팅: 사용자 정보(이름, 프로필 사진, '휴가 중' 상태, 직책), 채널 정보(아이콘, 설명, 대상), 사용자 역할을 저장하고 채널별, 사용자별로 마지막으로 읽은 메시지를 추적할 수 있습니다.
  • 스포츠, 미디어 및 엔터테인먼트: 실시간 투표 및 투표, 실시간 퀴즈, 실시간 입찰, 상품 또는 프로모션에 대한 CTA(클릭 유도 문안) 오버레이.
  • 게임: 플레이어 레벨, 승리한 게임, 배지 등 실시간 플레이어 통계, 리더보드 추적 및 관리
  • 기타: 기타: 사용자 부재/활성 상태, 사기 탐지를 위한 사용자 신뢰 점수, 사용자 위치 추적, 배터리 잔량 또는 마지막 센서 판독값과 같은 IoT 디바이스 상태

앱 컨텍스트를 활성화하는 방법

앱 컨텍스트는 다음과 같이 활성화할 수 있습니다:

  1. 관리자 포털에 로그인합니다.
  2. 포털 왼쪽에 있는 '앱' 탭을 클릭합니다.
  3. 애플리케이션을 클릭합니다. 이 애플리케이션의 키 설정 페이지로 이동합니다.
  4. 아직 키셋을 만들지 않았다면 '새 키셋 만들기' 버튼을 클릭하여 새 키셋을 만듭니다. 이 키 집합에 대한 구성 페이지로 이동합니다.
  5. 슬라이더를 클릭하여 앱 컨텍스트를 사용 설정합니다.
  6. 버킷 지역 설정은 데이터가 저장되는 지역입니다. 키 집합에 변경 사항을 저장한 후에는 리전을 수정할 수 없다는 점에 유의하세요.
  7. 사용자 메타데이터 이벤트채널 메타데이터 이벤트 설정이 활성화된 경우 나중에 설명하는 대로 데이터베이스에서 데이터가 설정되거나 제거될 때 사용자 및 채널 이벤트가 트리거됩니다.
  8. 멤버십 이벤트 설정이 활성화되어 있으면 나중에 설명하는 대로 멤버십이 추가, 업데이트 또는 제거될 때 멤버십 이벤트가 트리거됩니다.
  9. 나머지 옵션은 이 문서의 범위를 벗어나지만 자세한 내용은 앱 컨텍스트 문서를 참조하세요.
  10. 변경 사항 저장을 클릭하여 업데이트된 변경 사항을 저장합니다.

사용자 앱 컨텍스트

새 사용자가 애플리케이션에 등록되면 외부 ID 공급자를 통해 해당 사용자를 PubNub에 고유하게 식별할 수 있는 방법이 있는데, 이것이 바로 사용자의 클라이언트가 PubNub SDK를 초기화하는 데 사용할 사용자 ID입니다. PubNub 사용자 ID는 솔루션의 다른 곳에서 동일한 사용자를 식별하는 데 사용하는 ID와 다를 수 있으므로 '외부 ID' 필드에 이를 추적해 두는 것이 좋습니다.

사용자 이름, 이메일, 프로필 URL은 설명이 필요하지 않지만, 앱 컨텍스트 내에 보관하면 사용자가 이러한 필드 중 하나를 변경하면 모든 SDK에서 지원하는 앱 컨텍스트 이벤트를 사용하여 변경 사항을 모든 수신 클라이언트에 대규모로 전파할 수 있다는 이점이 있습니다.

앱 컨텍스트에서 사용자 표현을 만들려면 어떻게 해야 하나요?

앱 컨텍스트 사용자를 만드는 방법에는 두 가지가 있습니다.

  1. PubNub 관리자 포털에 있는 BizOps 워크스페이스를 사용하여 사용자를 생성하고 관리할 수 있습니다. 여기에는 코드가 필요하지 않으며 별도의 문서에 예제와 함께 프로세스가 설명되어 있습니다: BizOps Workspace로 사용자 및 채널을 관리하는 방법
  2. API는 사용자를 생성하기 위해 각 SDK를 통해 노출됩니다. 예를 들어, Chat SDK를 사용하는 경우 이 SDK는 앱 컨텍스트를 백그라운드에서 처리합니다. 예를 들어, Chat SDK의'createUser()' 메서드는 사용자를 만들기 위해 JavaScript의 setUUIDMetadata를 내부적으로 호출합니다. Chat SDK가 아닌 다른 SDK를 사용하는 경우 앱 컨텍스트 데이터를 수정하기 위한 전용 API가 제공됩니다. 이미 자바스크립트 setUUIDMetadata API에 대해 언급했지만 Java, Swift, Kotlin, Python, Unity 등 모든 API에 대한 동등한 API가 있습니다.

채널 앱 컨텍스트

사용자가 채널을 구독하거나 게시할 때마다 PubNub는 자동으로 채널을 생성하지만, 채널은 애플리케이션에 의미 있는 무언가를 나타낼 수 있습니다(예: 채팅 앱에서 채널을 사용하여 소통하는 그룹 채팅이 있거나 라이브 이벤트에서 전용 채널을 사용하여 투표를 관리할 수 있습니다).

채널에 대해 앱 컨텍스트를 지정하면 해당 채널과 관련된 원하는 메타데이터가 저장되고 업데이트되며, 이러한 업데이트는 선택적으로 관심 있는 모든 클라이언트에 전파됩니다. 채널에 '사용자 A와 사용자 B 간의 채팅' 등의 이름을 지정할 수 있으며, 채널이 일부 문서 저장소와 관련되어 있을 경우 사용자 지정 'URI' 필드에서 추적할 수 있습니다.

앱 컨텍스트에서 채널 표현을 만들려면 어떻게 해야 하나요?

사용자와 마찬가지로 앱 컨텍스트 채널을 만드는 방법에는 두 가지가 있습니다.

  1. 채널은 BizOps 워크스페이스를 사용하여 만들고 관리할 수 있습니다. 여기에는 코드가 필요하지 않으며 별도의 문서에 예제와 함께 프로세스가 설명되어 있습니다: BizOps Workspace로 사용자 및 채널을 관리하는 방법
  2. API는 각 SDK를 통해 노출되어 채널을 만들 수 있습니다. 예를 들어,' 채널만들기 ' 메서드 패밀리는 커버 아래에서 JavaScript의 setChannelMetadata( )를 호출하여 앱 컨텍스트를 백그라운드에서 처리하는 등, Chat SDK를 사용하는 경우 앱 컨텍스트를 처리합니다. Chat SDK가 아닌 다른 SDK를 사용하는 경우에는 JavaScript, Java, Swift, Kotlin, Python, Unity 등 앱 컨텍스트 데이터를 수정할 수 있는 전용 API가 제공됩니다.

멤버십 앱 컨텍스트

사용자와 채널 모두에 대한 앱 컨텍스트를 정의했으면 이제 사용자가 채널의 '멤버' 인지 여부를 지정하여 둘 사이의 관계를 정의할 수 있습니다.

사용자가 채널에 가입하면 같은 채널의 다른 멤버에 대한 업데이트를 받을 수 있으며, 사용자가 가입하거나 탈퇴할 때뿐만 아니라 해당 사용자의 앱 컨텍스트가 업데이트될 때마다(예: 이름을 업데이트할 때) 알림을 받을 수 있습니다.

이는 특히 채팅 앱 개발자에게많은 가치를 제공하는 놀랍도록 강력한 메커니즘입니다. 앱 컨텍스트를 사용하지 않는다면 모든 사용자를 직접 추적하고, 해당 사용자가 어떤 채널의 멤버였는지, 해당 사용자가 가입하거나 탈퇴할 때 같은 채널의 다른 모든 사람에게 알려야 합니다. 이 문제는 선형적으로 확장되지 않기 때문에 솔루션에 사용자가 많을수록 이 모든 정보를 중앙에서 관리하기가 더 어려워집니다.

앱 컨텍스트를 사용하면 채팅 클라이언트가 내부 상태를 유지하는 데 필요한 모든 정보를 제공받을 수 있으며, 무단 액세스를 방지하기 위해 PubNub 액세스 관리자를 사용하여 해당 데이터를 완벽하게 제어할 수 있습니다.

멤버십은 어떻게 만들 수 있나요?

사용자 및 채널과 마찬가지로 멤버십을 만드는 방법에는 두 가지가 있습니다.

  1. 멤버십은 코드를 작성하지 않고도 BizOps 워크스페이스를 사용하여 만들고 관리할 수 있습니다. 자세한 내용은 문서의 멤버십 관리 섹션을 참조하세요.
  2. 채널을 만들기 위한 API는 각 SDK를 통해 노출됩니다. 예를 들어' 채널만들기 ' 메서드 제품군은 은밀하게 JavaScript의 setMemberships를 호출하여 앱 컨텍스트를 처리합니다. Chat SDK가 아닌 다른 SDK를 사용하는 경우에는 JavaScript, Java, Swift, Kotlin, Python, Unity 등 앱 컨텍스트 데이터를 수정할 수 있는 전용 API가 제공됩니다.

앱 컨텍스트 변경 시 실시간 이벤트 수신

앱 컨텍스트 데이터가 변경되면 애플리케이션이 변경 사항을 실시간으로 알려주는 이벤트를 수신하므로 서버에 업데이트를 폴링하지 않고도 반응형 앱을 만들 수 있습니다.

PubNub SDK를 통해 앱 컨텍스트 변경 사항 수신(채팅 SDK 제외)

모든 PubNub SDK는 "이벤트 리스너"를 노출하며, 이 리스너를 통해 앱 컨텍스트 데이터가 변경될 때마다 실행되는 오브젝트 이벤트를 수신할 수 있습니다.

이 블로그에서 이벤트 엔진 및 이벤트 리스너 업데이트에 대해 설명한 것처럼, 이 글을 쓰는 시점에서 일부 SDK는 새로운 형식의 '이벤트 리스너'를 지원한다는 약간의 미묘한 차이가 있다는 점에 유의하세요. 이벤트 리스너 형식에 관계없이 원칙은 동일하게 유지됩니다. 앱은 SDK에서 제공하는 리스너를 통해 앱 컨텍스트 이벤트를 수신하도록 등록해야 합니다.

JavaScript SDK 문서에 자세히 설명된 대로 앱 컨텍스트 이벤트를 등록하는 방법은 다음과 같습니다:

const channel = pubnub.channel('channel_1');
const subscription = channel.subscription();
subscription.onObjects = 
  (objectsEvent) => { console.log("Objects event: ", objectsEvent); };
Enter fullscreen mode Exit fullscreen mode

다른 언어로 앱 컨텍스트 이벤트를 등록하는 방법을 설명하는 문서는 다음 위치에서 찾을 수 있습니다: Java, Swift, Kotlin, Python (Python은 이벤트를 '메타데이터'라고 부르는 반면, 다른 SDK는 이벤트를 '오브젝트'라고 부름), Unity 등.

작동하는 예제 및 대화형 데모는 BizOps 워크스페이스로 사용자 및 채널을 관리하는 방법에 대한 문서를 참조하세요.

PubNub Chat SDK를 통해 앱 컨텍스트 변경 사항 수신하기

PubNub Chat SDK는 streamUpdates() API 제품군을 통해 앱 컨텍스트 이벤트를 노출합니다.

다음은 웹용 Chat SDK 데모 앱에서 가져온 몇 가지 예시입니다:

//  Detect changes to the current User
useEffect(() => {
  return currentUser.streamUpdates(updatedUser => {
    if (updatedUser.name) {
      setName(updatedUser.name)
    }
    if (updatedUser.profileUrl) {
      setProfileUrl(updatedUser.profileUrl)
    }
  })
}, [currentUser])
Enter fullscreen mode Exit fullscreen mode
//  Detect changes to an array of Channels
useEffect(() => {
if (chat && privateGroups) {
    return Channel.streamUpdatesOn(privateGroups, channels => {
    //  The array of channels, privateGroups, has been updated
}
}, [chat, privateGroups])
Enter fullscreen mode Exit fullscreen mode

Chat SDK의 간단한 '상태 확인' 샘플을 기반으로 한 작업 예제는 BizOps 워크스페이스로 사용자 및 채널을 관리하는 방법에 대한 문서를 참조하세요.

앱 컨텍스트 및 PubNub 일루미네이트

PubNub Illuminate는 조직의 고유한 사용 사례에 맞게 사용자 지정할 수 있는 실시간 의사 결정 및 분석 제품입니다. 이 제품은 제품 관리자와 분석가를 염두에 두고 설계되어 다음과 같은 작업을 수행할 수 있습니다:

  • 사용자 지정 실시간 집계 지표를 정의합니다.
  • 조건 및 작업으로 의사 결정 규칙을 설정하고 배포합니다.
  • 추적 중인 메트릭, 실행된 작업 및 그 결과를 즉시 시각화하세요.

엔지니어링 팀이 진행 중인 프로젝트에서 벗어나지 않고도 이 모든 작업을 실시간으로 수행할 수 있습니다.

PubNub 일루미네이트가 무엇이며 데이터에 대한 즉각적인 실행 가능한 인사이트를 제공하는 방법에 대한 자세한 설명은 이 글의 범위를 벗어나지만, 자세한 내용은 문서와 제품 개요를 참조하시기 바랍니다.

요약: 애플리케이션과 관련된 지표, 즉 측정하고자 하는 항목을 정의합니다. 예를 들어 자산 추적 시나리오에서는 주문이 접수된 후 시간이 될 수 있습니다. 해당 지표와 관련된 특정 조건 (예: '주문 후 시간'이 특정 값을 초과할 수 있음)이 충족되면 어떤 조치를 취할 수 있습니다.

어떤 조치를 취할지는 유연하지만 가능한 조치 중 세 가지는 앱 컨텍스트와 관련이 있습니다:

How-to - Use App Context - Image 02

PubNub 일루미네이트로 사용자 업데이트

사전 정의되거나 사용자 정의된 사용자 메타데이터를 설정할 수 있습니다. 아래 스크린샷은 ID가 123인 사용자의 상태가 정적 값인 '새 상태'로 설정되어 있지만 작업을 트리거한 조건에 따라 동적 값을 설정할 수도 있습니다.

How-to - Use App Context - Image 03

PubNub 일루미네이트로 채널 업데이트

사전 정의 또는 사용자 지정 채널 메타데이터를 설정할 수 있습니다. 아래 스크린샷은 ID가 123인 채널의 이름이 정적 값인 '새 이름'으로 설정되어 있지만 작업을 트리거한 조건에 따라 동적 값을 설정할 수도 있습니다.

How-to - Use App Context - Image 04

펍넙 일루미네이트로 멤버십 업데이트하기

사전 정의 또는 사용자 정의 멤버십 메타데이터를 설정할 수 있습니다. 아래 스크린샷은 사용자 ID 123의 채널 123 멤버십 상태가 정적 값인 '새 상태'로 설정된 것을 보여줍니다. 작업을 트리거한 조건에 따라 동적 값을 설정할 수도 있습니다.

How-to - Use App Context - Image 05

앱 컨텍스트 및 PubNub 함수

펍넙은 펍넙 플랫폼에서 발생하는 이벤트를 캡처할 수 있는 함수를 제공합니다. 함수를 사용하면 코드를 작성하거나 기존 통합을 활용하여 데이터를 변환, 경로 변경, 보강, 필터링 및 집계할 수 있습니다. 펍넙 함수에 대한 자세한 개요는 함수 설명서를 참조하시기 바라며, 이 글에서는 펍넙 함수가 앱 컨텍스트와 어떻게 연관되는지 살펴보겠습니다.

PubNub 함수 내에서 앱 컨텍스트 업데이트하기

함수가 실행되는 환경에서는 PubNub 모듈에 액세스할 수 있습니다. 이 모듈은 키 집합의 앱 컨텍스트에 대한 전체 액세스 권한을 가지며, 문서에서 가져온 몇 가지 예는 다음과 같습니다. :

사용자 앱 컨텍스트 메타데이터 가져오기 예제

export default (event) => {
  const pubnub = require('pubnub');

  return pubnub.objects.getUUIDMetadata({
    uuid: 'my-uuid',
    include: {
      customFields: false,
    },
  })
  .then((resp) => {
    console.log(resp);
    return event.ok('Fetched UUID metadata successfully.');
  })
  .catch((err) => {
    console.log(err);
    return event.abort('Failed to fetch UUID metadata');
  });
};
Enter fullscreen mode Exit fullscreen mode

채널 앱 컨텍스트 메타데이터 설정 예제

export default (event) => {
  const pubnub = require('pubnub');

  return pubnub.objects.setChannelMetadata({
    channel: 'my-channel',
    data: {
      name: 'channel-name',
      description: 'What a great channel',
      custom: {
        foo: 'bar',
      },
    },
    include: {
      customFields: false,
    },
  })
  .then((resp) => {
    console.log(resp);
    return event.ok('Set channel metadata successfully.');
  })
  .catch((error) => {
    console.log(err);
    return event.abort('Failed to set channel metadata.');
  });
};
Enter fullscreen mode Exit fullscreen mode

포괄적인 코드 예제는 PubNub 모듈 설명서를 참조하세요.

앱 컨텍스트가 변경될 때 PubNub 함수 트리거하기

이벤트 유형 문서에 자세히 설명된 대로 함수를 트리거할 수 있는 다양한 이벤트 유형이 있습니다. 여기에는 메시지와 신호가 전송되는 시기를 감지하는 기능, 존재 이벤트 발생 후 함수를 트리거하는 기능, 지정된 간격으로 또는 필요에 따라 함수를 실행하는 기능 등이 포함됩니다. 현재로서는 앱 컨텍스트 업데이트 후 함수를 실행할 수 없지만, 애플리케이션에 이 기능이 필요한 경우 지원팀에 문의하시면 사용 사례를 안내해 드릴 것입니다.

다음 단계

앱 컨텍스트가 실제로 작동하는 모습을 보려면, 서버리스 스토리지를 사용하는 채팅 앱이 어떤 모습인지 보여주기 위해 채팅 SDK와 함께 앱 컨텍스트를 사용하는 채팅 데모를 확인하세요. 채팅 데모에서는 사용자 및 채널 메타데이터를 설정하고 이러한 변경 사항이 다른 청취자 및 구성원에게 실시간으로 전파되는 것을 확인할 수 있습니다.

또한 앱 컨텍스트에 따라 달라지는 BizOps 워크스페이스에 대한 3부 시리즈에서 관련 방법을 살펴보세요: 사용자 및 채널 관리하기, 대화 모니터링 및 중재하기, 채팅을 안전하게 중재하기 등을 다루고 있습니다.

마지막으로, 개발자팀( devrel@pubnub.com )에 문의하거나 지원팀에 연락하여 PubNub 개발과 관련하여 도움이 필요하면 언제든지 문의하세요.

펍넙이 어떤 도움을 드릴 수 있나요?

이 문서는 원래 PubNub.com에 게시되었습니다.

저희 플랫폼은 개발자가 웹 앱, 모바일 앱 및 IoT 디바이스를 위한 실시간 인터랙티브를 구축, 제공 및 관리할 수 있도록 지원합니다.

저희 플랫폼의 기반은 업계에서 가장 크고 확장성이 뛰어난 실시간 에지 메시징 네트워크입니다. 전 세계 15개 이상의 PoP가 월간 8억 명의 활성 사용자를 지원하고 99.999%의 안정성을 제공하므로 중단, 동시 접속자 수 제한 또는 트래픽 폭증으로 인한 지연 문제를 걱정할 필요가 없습니다.

PubNub 체험하기

라이브 투어를 통해 5분 이내에 모든 PubNub 기반 앱의 필수 개념을 이해하세요.

설정하기

PubNub 계정에 가입하여 PubNub 키에 무료로 즉시 액세스하세요.

시작하기

사용 사례나 SDK에 관계없이 PubNub 문서를 통해 바로 시작하고 실행할 수 있습니다.

Top comments (0)