InfoGrab DocsInfoGrab Docs

모바일 앱 FAQ

요약

네, Mattermost 모바일 앱 v2.0을 사용하면 가능합니다. 기기에서 찾을 수 있는 데이터는 사용자가 Mattermost 서버에 로그인되어 있는지 여부에만 의존하며, 기기 연결 상태나 앱 상태와는 무관합니다. 또한 앱이 작업을 추적하는 데 사용하는 메타데이터도 캐시됩니다.

여러 Mattermost 서버에 연결할 수 있습니까?#

네, Mattermost 모바일 앱 v2.0을 사용하면 가능합니다. 모바일 v1.x는 한 번에 하나의 서버 연결만 지원합니다.

어떤 데이터가 저장됩니까?#

기기에서 찾을 수 있는 데이터는 사용자가 Mattermost 서버에 로그인되어 있는지 여부에만 의존하며, 기기 연결 상태나 앱 상태와는 무관합니다. 로그인된 상태에서 사용자가 일반적으로 볼 수 있는 모든 것이 기기에 저장될 수 있으며, 다음 콘텐츠가 포함됩니다:

  • 메시지
  • 메시지에 첨부된 파일 및 이미지
  • 현재 열린 채널에 있는 사람들의 프로필 사진, 사용자 이름 및 이메일 주소

또한 앱이 작업을 추적하는 데 사용하는 메타데이터도 캐시됩니다. 메타데이터에는 사용자 ID, 채널 ID, 팀 ID 및 메시지 ID가 포함됩니다.

현재 연결된 모바일 기기에서는 캐시를 원격으로 재설정할 수 없습니다.

푸시 알림은 어떻게 됩니까?#

푸시 알림 저장은 기기의 운영 체제에서 관리합니다. Mattermost는 메시지 텍스트나 채널 이름을 포함하지 않는 제한된 정보를 전송하도록 구성할 수 있으며, 푸시 알림을 전혀 전송하지 않도록 구성할 수도 있습니다.

데이터는 어디에 저장되고 어떻게 보호됩니까?#

데이터는 앱의 로컬 저장소에 저장됩니다. 기기가 설치된 앱에 일반적으로 제공하는 보안 조치로 보호됩니다.

데이터는 얼마나 오래 저장됩니까?#

데이터는 사용자가 로그아웃하거나 일반 캐시 관리 중에 삭제될 때까지 저장됩니다. 사용자 계정을 비활성화하면 강제 로그아웃되고 기기에서 데이터가 삭제됩니다.

사용자 계정이 비활성화된 후 데이터는 어떻게 처리됩니까?#

사용자가 앱에서 로그아웃하면 앱 데이터가 기기에서 삭제됩니다. 계정이 비활성화될 때 사용자가 로그인 상태이면 비활성화 후 1분 이내에 시스템이 사용자를 로그아웃시킵니다. 그 후 모든 앱 데이터가 기기에서 삭제됩니다.

서버에서 파일 첨부가 활성화된 경우 사용자는 메시지에 첨부된 파일을 다운로드하여 로컬 파일 시스템에 저장할 수 있습니다. 다운로드된 후 파일은 앱의 제어 밖에 있으며 기기에 무기한 남아 있을 수 있습니다.

메시지가 사전 로드됩니까?#

아니요. 메시지는 요청에 따라 기기로 전송됩니다. 사용자가 위로 스크롤하거나 채널을 전환할 것을 예상하여 사전 로드되지 않습니다.

자체 푸시 알림 서버를 호스팅하려면 모바일 앱을 컴파일해야 합니까?#

네. 자체 푸시 알림 서버를 호스팅하려면 모바일 앱을 컴파일해야 합니다. 자체 모바일 앱을 컴파일하는 방법은 문서를 참조하세요.

푸시 알림은 어떻게 작동합니까?#

Mattermost 서버는 호스팅된 푸시 프록시 서버로 푸시 알림을 전송하고, 이 서버는 Apple과 Google이 제공하는 모바일 푸시 알림 서비스를 통해 전달합니다.

푸시 알림이 신뢰할 수 있는 소스에서 오는지 확인하기 위해 Apple과 Google은 모바일 앱 자체에 컴파일된 비밀에 해당하는 키 또는 서명을 사용하는 서비스에서 전송된 푸시 알림만 허용합니다.

전체 프로세스는 다음과 같습니다:

  1. 개인 네트워크에서 실행 중인 Mattermost 서버에서 푸시 알림을 트리거하는 작업이 감지됩니다.
  2. Mattermost 서버는 개인 네트워크에서 자체 호스팅되거나 Mattermost, Inc.에서 공개적으로 호스팅되는 Mattermost 푸시 알림 서비스(MPNS)로 푸시 알림 메시지를 전송합니다.
  3. MPNS는 TLS 연결을 통해 Apple 푸시 알림 서비스(APNS) 또는 Google의 Firebase Cloud Messaging(FCM) 서비스로 푸시 알림 메시지를 전송합니다.
  • Apple로 전송된 경우 메시지에는 iOS 앱에 컴파일된 비밀에 해당하는 서명이 있습니다.
  • Google로 전송된 경우 메시지는 Android 앱에 컴파일된 비밀에 해당하는 키를 사용합니다.

iOS 또는 Android를 사용하든 관계없이 MPNS는 모바일 앱에 컴파일된 적절한 비밀에 액세스할 수 있어야 합니다.

즉, Apple App Store 또는 Google Play Store의 Mattermost 앱을 사용하는 경우 Mattermost, Inc.의 호스팅된 푸시 알림 서비스를 사용해야 합니다. 앱을 직접 컴파일하는 경우 해당 비밀이 있는 자체 MPNS도 컴파일하고 사용해야 합니다.

  1. APNS 또는 FCM은 TLS를 통해 MPNS로부터 푸시 알림 메시지를 받은 다음 표시할 사용자의 iOS 또는 Android 기기로 메시지를 전달합니다.
Note

iOS 및 Android 애플리케이션에서 푸시 알림을 사용하면 Apple 또는 Google이 제어하는 서버에서 푸시 알림 내용이 표시되고 암호화되지 않는 순간이 있습니다. 이는 모든 iOS 또는 Android 앱의 표준입니다. 이러한 이유로 Mattermost Enterprise에서 푸시 알림에서 Mattermost 메시지 내용을 생략하거나 알림이 기기에 도달하면 서버에서 메시지 내용을 가져오도록 구성하는 옵션을 사용할 수 있습니다. 자세한 내용은 구성 설정 문서를 참조하세요.

TLS v1.3이 지원됩니까?#

네. Mattermost 모바일 앱 v2.0은 WebSocket 연결에 대해 TLS v1.2와 TLS v1.3을 모두 지원합니다.

모바일 푸시 알림에서 전송되는 게시물 메타데이터는 무엇입니까?#

다음 게시물 메타데이터가 모든 푸시 알림에서 전송됩니다:

  • Team ID
  • Channel ID
  • Post ID
  • User ID (게시물 작성자)
  • Username (게시물 작성자 또는 웹훅 재정의 사용자 이름)
  • Root ID (게시물이 스레드에 있는 경우에만)
  • Type (푸시 알림 생성 또는 지우기)
  • Category (iOS 전용, 알림에 답장할 수 있는지 결정)
  • Badge number (알림이 수신될 때 앱 아이콘의 알림 배지가 설정되어야 하는 값)

푸시 알림 콘텐츠에 대한 시스템 콘솔 설정에 따라 추가 메타데이터가 전송될 수 있습니다:

  • 발신자 및 채널 이름이 포함된 일반 설명: Channel name 메타데이터가 포함됩니다.
  • 알림 페이로드에서 전송된 전체 메시지 콘텐츠: Post content 및 Channel name 메타데이터가 포함됩니다.
  • 수신 시 서버에서 가져온 전체 메시지 콘텐츠 (Mattermost Enterprise에서 사용 가능): Post content 및 Channel name은 알림 페이로드에 포함되지 않으며, 대신 Post ID를 사용하여 푸시 알림이 기기에서 수신된 후 서버에서 Post content 및 Channel name을 가져옵니다.

ID 전용 푸시 알림을 사용하여 알림 콘텐츠가 서드파티 서비스에 노출되지 않도록 하려면 어떻게 해야 합니까?#

모바일 데이터 개인 정보와 관련하여 많은 조직이 메시징 데이터의 안전한 처리를 우선시하며, 특히 미션 크리티컬하거나 독점적인 정보를 포함할 수 있는 경우에는 더욱 그렇습니다. 이러한 조직은 기기에 도달하기 전에 데이터가 Apple 푸시 알림 서비스(APNS) 또는 Google Firebase Cloud Messaging(FCM)과 같은 서드파티 기관을 통과해야 하기 때문에 모바일 알림 사용에 대한 우려가 있을 수 있습니다.

이는 엄격한 규정 준수 요구 사항 하에 운영되며 외부 기관에 메시지 데이터를 노출할 수 없는 조직에 잠재적인 위험을 제기합니다. 이를 해결하기 위해 전체 메시지 데이터 대신 알림 페이로드에 고유한 메시지 ID만 전송하여 Mattermost 푸시 알림 메시지 데이터를 더 잘 보호하는 옵션을 제공합니다(Mattermost Enterprise에서 사용 가능). 기기가 ID를 수신하면 서버에서 직접 메시지 콘텐츠를 가져와 평소와 같이 알림을 표시합니다.

APNS 및 FCM과 같은 외부 기관은 ID만 처리하며 메시지 자체의 어떤 부분도 읽을 수 없습니다. 조직에 엄격한 개인 정보 또는 규정 준수 요구 사항이 있는 경우 ID 전용 푸시 알림 설정은 팀원들이 모바일 푸시 알림의 혜택을 받을 수 있도록 하면서 높은 수준의 개인 정보를 제공합니다.

다음 페이로드는 ID 전용 설정을 사용할 때 푸시 알림 서비스로 전송되는 JSON의 예를 보여줍니다:

{
    "ack_id": "nnfbqk5bnffe5karxuzs8o5rec",
    "platform": "apple_rn",
    "server_id": "aoej8izzfffr9e67d6uz3g387h",
    "device_id": "32f198dbdd7427be7e6f03ba721ffdceba58c3f0bfa9c4655a6e7cc8271ba539",
    "post_id": "77d9cs9aq3b1fpoepbdbmqfs4c",
    "category": "CAN_REPLY",
    "message": "You've received a new message.",
    "badge": 3,
    "channel_id": "et3ghiycm7g7bb41ihg85pqgah",
    "type": "message",
    "sender_id": "g774dzud4tgaxgphso4wm8xrxe",
    "version": "v2",
    "is_id_loaded": true
}

다음 정의가 적용됩니다:

  • ack_id: 전송된 알림이 기기에서 수신되었는지 확인하는 알림당 생성된 임시 식별자(서버의 나머지 모델에 대한 식별자를 생성하는 것과 동일한 방법 사용). 이 정보는 Mattermost 서버의 notifications.log 파일에서 확인할 수 있습니다. ack_id는 전송된 알림이 수신되었는지 확인하기 위해 모바일 앱에서 Mattermost 서버로 수신 확인을 전달하는 데만 사용됩니다.
  • server_id: 서버에서 생성된 서버 식별자로 DiagnosticId라고 합니다. 향후 이 값은 모바일 앱(다중 서버 지원)에서 알림이 속한 서버를 식별하는 데 사용됩니다.
  • device_id: 기기가 알림을 수신하도록 허용할 때 APNs 및 FCM이 반환하는 토큰입니다. 따라서 사용자가 Mattermost에 로그인하면 Mattermost는 이 device_id를 세션에 첨부하기 위해 전송합니다. 세션이 종료되면 세션 레코드가 제거되므로 device_id는 더 이상 서버 데이터베이스에 없습니다. 사용자가 다시 로그인하면 식별자가 기기에 특정하기 때문에 동일한 값으로 device_id가 다시 등록됩니다. 이 값은 동일한 사람이 소유한 앱이나 기기 간에 동일하지 않지만 동일한 기기의 동일한 앱에서 사용자가 생성한 각 세션에 대해 동일합니다.
  • version: 모바일 앱에 데이터가 구조화된 방식을 알려 올바르게 파싱할 수 있습니다. 현재 값은 v2입니다.
  • is_id_loaded: (Mattermost Enterprise 전용) true이면 모바일 앱이 세부 정보가 페이로드에 포함되지 않으므로 서버에서 알림 내용을 찾습니다.

모바일 앱 보안 옵션은 무엇입니까?#

다음 보안 모바일 앱 배포 옵션이 사용 가능합니다:

  1. 모바일 앱에 대한 네트워크 연결 보안
  • HTTPS 및 WSS 네트워크 연결을 사용하여 전송을 암호화합니다.
  • 모바일 기기에서 모바일 VPN 클라이언트를 사용하여 개인 네트워크 내의 Mattermost 서버에 대한 보안 연결을 수립합니다.
  1. 다단계 인증 옵션 사용
  • 다단계 인증이 포함된 VPN 클라이언트를 사용하지 않는 경우 Mattermost 자체 내에서 또는 SSO 공급자를 통해 Mattermost에 인증할 때 MFA를 요구하는 것을 강력히 권장합니다.

푸시 알림 보안 옵션은 무엇입니까?#

푸시 알림 서비스 보안을 위한 다음 옵션이 사용 가능합니다:

  1. 알림 내용 보호
  1. 푸시 알림 비활성화
  • 보안 요구 사항에 따라 푸시 알림을 완전히 비활성화할 수도 있습니다. 기본 서버 설정에서 푸시 알림은 비활성화되어 있습니다.
  1. 직접 컴파일하는 앱에 대한 연결 암호화:
  • 개인 호스팅 Mattermost 푸시 알림 서비스(MPNS)를 사용할 때 다음 간에 암호화된 TLS 연결을 사용합니다:
    • MNPS와 Apple 푸시 알림 서비스(APNS)
    • MPNS와 Google의 Firebase Cloud Messaging(FCM)
    • MPNS와 Mattermost 서버
  1. Apple App Store 및 Google Play를 통해 설치된 앱 보안:
  • App Store 및 Google Play의 Mattermost 모바일 앱을 사용할 때 Mattermost의 호스팅 푸시 알림 서비스(HPNS)를 사용하기 위해 Mattermost Enterprise 또는 Professional의 연간 구독을 구매합니다.
Note

구성 세부 사항은 Mattermost 모바일 앱 배포 및 자체 앱 버전 배포 가이드를 참조하세요.

푸시 알림 수신에 지연이 발생하는 이유는 무엇입니까?#

Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM)이 Mattermost에서 기기가 푸시 알림을 받는 시간을 결정합니다. 따라서 지연은 일반적으로 해당 서비스로 인한 것입니다.

기기가 푸시 알림을 받는 기술적 흐름은 다음과 같습니다:

  1. 사용자가 Mattermost에서 메시지를 게시합니다.
  2. Mattermost 서버가 알림을 전송해야 하는지 확인합니다.
  3. 필요한 경우 Mattermost 서버가 푸시 알림이 포함된 페이로드를 푸시 프록시로 전송합니다.
  4. 푸시 프록시가 알림을 파싱하고 APNS 및 FCM으로 전달합니다.
  5. APNS 및 FCM이 Mattermost에 대한 푸시 알림이 있다는 것을 관련 기기에 알립니다. 이는 일반적으로 거의 즉시 발생하지만 몇 분 정도 지연될 수 있습니다.
  6. Mattermost가 알림을 처리하고 사용자의 기기에 표시합니다.

EMM(Enterprise Mobility Management) 공급자로 Mattermost를 배포하려면 어떻게 해야 합니까?#

Mattermost는 높은 개인 정보 및 커스텀 보안 요구 사항이 있는 고객이 자신만이 제어하는 키를 사용하여 모바일 앱 및 푸시 알림 서비스를 배포할 수 있도록 합니다.

EMM 공급자를 위한 AppConfig 사용에 대해 자세히 알아보기.

Mattermost 푸시 알림 서비스를 어떻게 호스팅합니까?#

먼저 Mattermost 호스팅 푸시 알림 서비스(HPNS)를 사용할 수 있습니다. 조직은 대신 자체 푸시 프록시 서버를 호스팅할 수도 있습니다. 이는 다음을 원하는 경우에 해당됩니다:

  1. Mattermost 모바일 앱 커스터마이징;
  2. 자체 푸시 알림 서비스 배포, 또는
  3. BlueCedar 또는 AppDome으로 모바일 앱을 재패키징(둘 다 공식적으로 지원되지 않지만 일부 조직에서 성공적으로 배포됨).

앱을 화이트 레이블로 만들고 빌드 설정을 커스터마이징하려면 어떻게 해야 합니까?#

/assets/base 폴더의 모든 파일은 업스트림 버전의 앱에 대한 변경 사항과 충돌하지 않고 필요에 따라 재정의할 수 있습니다. 이를 위해:

  1. /assets/override 폴더를 생성합니다.
  2. /assets/base에서 교체하려는 파일이나 폴더를 /assets/override로 복사합니다.
  3. /assets/override의 파일을 변경합니다.

앱을 컴파일하거나 make dist/assets를 실행하면 해당 두 폴더의 내용이 충돌이 있는 경우 우선 순위가 /assets/override의 파일로 병합됩니다. 이미지와 같은 바이너리 파일의 경우 재정의된 파일이 기본 버전을 완전히 교체하지만 JSON 파일은 재정의된 복사본에 설정되지 않은 필드가 기본 버전을 사용하도록 병합됩니다.

이 기능을 사용하는 방법에 대한 더 구체적인 예는 다음 섹션을 참조하세요.

사용자를 위한 서버 URL을 사전 구성하려면 어떻게 해야 합니까?#

기본 config.json 설정을 재정의하고 모바일 앱을 직접 빌드하여 서버 URL 및 기타 설정을 사전 구성할 수 있습니다.

  1. mattermost-mobile 리포지터리를 포크합니다.
  2. 포크된 mattermost-mobile 리포지터리에서 /assets/override/config.json 파일을 생성합니다.
  3. assets/base/config.json에서 재정의하려는 모든 설정을 새로 생성된 /assets/override/config.json 파일에 복사하여 붙여넣습니다.
  4. 서버 URL을 재정의하려면 /assets/override/config.json에서 DefaultServerURL을 Mattermost 서버의 서버 URL로 설정합니다.
  5. (선택 사항) 사용자가 서버 URL을 변경하지 못하도록 하려면 AutoSelectServerUrl을 true로 설정합니다.
  6. (선택 사항) 원하는 다른 설정을 재정의합니다.

위를 완료한 후 /assets/override/config.json 파일은 다음과 같이 보입니다:

{
    "DefaultServerURL": "my-mattermost-instance.example.com",
    "AutoSelectServerUrl": true,
    "ExperimentalUsernamePressIsMention": true
}
  1. 마지막으로 Mattermost 모바일 앱과 Mattermost 푸시 프록시 서버의 자체 버전을 컴파일합니다.

Mattermost 모바일 앱에서 Google SSO가 작동하도록 하려면 어떻게 해야 합니까?#

Apple App Store 및 Google Play Store의 앱은 기본적으로 Google SSO를 지원할 수 없습니다. Google이 각 조직에 특정한 고유한 Google API 키를 요구하기 때문입니다.

Google SSO 지원이 필요한 경우 조직을 위한 커스텀 버전의 앱을 만들 수 있습니다. mattermost-mobile 리포지터리를 포크하고 앱을 직접 컴파일하기 전에 Google SSO 지원을 추가합니다. 관심이 있으시면 토론을 시작하기 위해 GitHub에서 이슈를 제출하세요.

딥 링크를 구성하려면 어떻게 해야 합니까?#

앱은 앱 설치 시 플랫폼별 구성을 확인합니다. 구성을 찾지 못하면 딥 링크 코드가 조용히 있고 퍼머링크는 일반 링크로 작동합니다.

iOS 설정

  1. 서버 루트의 .well-known 디렉터리에 apple-app-site-association 파일을 생성합니다. https://<your-site-name>/.well-known/apple-app-site-association을 탐색하여 액세스할 수 있어야 합니다. 파일 확장자가 없어야 합니다.

  2. 딥 링크를 처리하려면 다음 JSON을 apple-app-site-association 파일에 붙여넣습니다. appID 속성에 앱 ID를 배치하세요:

    { "applinks": { "apps": [], "details": [ { "appID": "<your-app-id-here>", "paths": ["/pl/*", "/channels/*"] } ] } }

  3. Apple 개발자 포털을 통해 앱에 관련 도메인 권한을 추가합니다.

  4. Xcode 권한 관리자를 통해 앱이 지원하는 도메인을 지정하는 권한을 추가합니다.

  5. 새 권한으로 앱을 설치하기 전에 브라우저에서 https://<your-site-name>/.well-known/apple-app-site-association으로 이동하여 apple-app-site-association 파일의 내용을 볼 수 있는지 확인합니다. 앱은 설치 시 이 파일을 확인하며, 발견되면 외부 퍼머링크가 앱을 열 수 있습니다.

iOS에서 딥 링크 구성에 대한 공식 문서는 여기에서 찾을 수 있습니다.

Android 설정

Android에서 딥 링크 구성을 위해 Android Studio의 App Links Assistant를 참조하세요.

내부 및 외부 네트워크에서 사용자를 연결하려면 어떻게 해야 합니까?#

글로벌 네트워크 트래픽 관리를 설정하여 모바일 앱으로 연결할 때 사용자를 내부 또는 외부 네트워크로 보낼 수 있습니다. 또한 내부 및 외부 트래픽에 두 가지 별도의 제한 계층을 가질 수 있습니다:

  • 내부 네트워크에서 기기별 VPN을 통한 개인 네트워크에 배포합니다.
  • 외부 네트워크에서 NGINX 프록시를 통한 TLS 상호 인증 및 데스크톱과 iOS를 위한 클라이언트 측 인증서로 배포합니다.

Microsoft Azure와 같은 많은 서비스는 네트워크 트래픽 관리 옵션을 제공하거나 서비스 파트너의 도움을 받을 수 있습니다.

IT 정책에서 기업 프록시 서버 사용을 요구하는 경우 모바일 푸시 알림을 받는 방법#

IT 정책에서 모든 아웃바운드 트래픽을 스캔하고 감사하기 위한 기업 프록시가 필요한 경우 다음 옵션이 사용 가능합니다:

프리-프록시 릴레이가 포함된 프록시 인식 구성으로 Mattermost 배포#

Mattermost 푸시 알림 서비스는 Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM) 서비스로 직접 트래픽을 전송하도록 설계되었습니다.

프록시 인식 구성에서 프리-프록시 릴레이는 Mattermost 푸시 프록시에서 메시지를 수락하고 최종 목적지로 전송하기 전에 내부 IT 요구 사항을 적용하는 기업 프록시로 전달합니다.

샘플 아키텍처 개요:

Mattermost 푸시 알림 서비스는 Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM) 서비스로 직접 트래픽을 전송하도록 설계되었습니다. 그러나 조직에서 모든 아웃바운드 트래픽을 스캔하고 감사하기 위한 기업 프록시가 필요한 경우 프리-프록시 릴레이가 포함된 프록시 인식 구성으로 Mattermost를 배포할 수 있습니다. 릴레이는 Mattermost 푸시 프록시에서 메시지를 수락하고, 내부 IT 요구 사항을 적용하는 기업 프록시로 전달한 다음 모바일 기기로 알림을 전달합니다. 이 구성에는 신뢰할 수 있는 루트 인증서가 필요합니다.

이를 통해 프리-프록시 릴레이는 APNS 역할을 하고 기업 프록시를 통해 최종 목적지로 요청을 전달할 수 있으며 APNS 트래픽이 프록시를 인식할 필요가 없습니다. APNS 트래픽은 /etc/hosts 항목을 통해 프리-프록시 릴레이로 리디렉션됩니다. 항목은 Mattermost 푸시 프록시가 프리-프록시 릴레이를 신뢰할 수 있도록 인증서에 서명하는 신뢰할 수 있는 CA를 사용합니다. 자세한 내용은 사용자 알림에 대한 Apple 개발자 문서를 참조하세요.

Google의 FCM 트래픽은 환경 변수를 통해 프록시를 인식하므로 이를 위한 조치가 필요하지 않습니다.

또한 APNS 트래픽은 HTTP/2를 요구하므로 Apple 기기로 푸시 알림을 전송하려면 기업 프록시 서버가 HTTP/2 요청을 지원해야 합니다. 프리-프록시 릴레이에도 HTTP/2 지원이 필요합니다.

DMZ 또는 신뢰할 수 있는 클라우드 환경에서 연결이 제한된 포스트-프록시 릴레이로 Mattermost 배포#

일부 레거시 기업 프록시 구성은 iOS 기기로 푸시 알림을 전송하기 위한 Apple의 HTTP/2 요청 요구 사항과 같은 현대 모바일 아키텍처의 요구 사항과 호환되지 않을 수 있습니다.

이 경우 포스트-프록시 릴레이를 배포하여 비호환 형식(예: HTTP/1.1)으로 기업 IT 프록시를 통과하는 Mattermost 서버의 메시지를 받아 HTTP/2로 변환하고 최종 목적지인 Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM) 서비스로 전달할 수 있습니다.

이 포스트-프록시 릴레이는 Mattermost 푸시 프록시 설치 가이드를 사용하여 커스텀 보안 및 규정 준수 요구 사항을 충족하기 위한 연결 제한과 함께 구성할 수 있습니다.

DMZ 대신 내부 승인 및 정책에 따라 AWS 또는 Azure와 같은 신뢰할 수 있는 클라우드 환경에서 호스팅할 수도 있습니다.

Mattermost 푸시 알림 서비스는 Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM) 서비스로 직접 트래픽을 전송하도록 설계되었습니다. 그러나 조직에서 모바일 기기로 푸시 알림을 전송하기 위한 HTTP/2 요청을 지원하지 않는 경우 포스트-프록시 릴레이를 배포하여 Mattermost 서버의 메시지를 받아 비호환 형식에서 변환한 다음 최종 목적지로 전달할 수 있습니다. 포스트-프록시 릴레이는 커스텀 보안 및 규정 준수 요구 사항을 충족하기 위해 연결 제한을 사용하여 구성할 수 있습니다.

기업 프록시 서버를 우회하도록 Mattermost 푸시 알림 프록시 허용 목록 등록#

내부 IT 정책 및 승인된 면제/예외에 따라 기업 프록시 없이 Apple 푸시 알림 서비스(APNS)에 직접 연결하도록 Mattermost 푸시 프록시를 배포하도록 선택할 수 있습니다.

이 옵션을 위해 Apple에서 하나의 서브도메인과 포트를 허용 목록에 등록해야 합니다:

  • 개발 서버: api.development.push.apple.com:443
  • 프로덕션 서버: api.push.apple.com:443

앱 스토어 버전의 Mattermost 모바일 앱 실행#

Apple App Store 또는 Google Play Store에서 Mattermost가 호스팅하는 모바일 애플리케이션을 사용하고 기업 프록시를 통해 Mattermost 호스팅 푸시 알림 서비스(HPNS)에 연결할 수 있습니다.

Note

Mattermost의 호스팅 애플리케이션 사용은 AppConfig를 통한 기업 이동성 관리 솔루션으로 배포할 수 있습니다. 단, 래핑은 지원되지 않습니다. 자세한 내용은 제품 문서를 참조하세요.

deviceId 동작 방식#

deviceId는 Apple 푸시 알림 서비스(APNs) 및 Firebase Cloud Messaging(FCM)과 같은 푸시 알림 서비스가 제공하는 식별자로, 기기, 앱 및 알림 서비스 간의 관계를 식별합니다.

앱이 시작될 때 푸시 알림 권한이 활성화된 경우 앱은 deviceId를 얻기 위해 해당 알림 서비스(iOS의 경우 APNs, Android의 경우 FCM)에 연결을 시도합니다. deviceId가 변경되면 앱은 연결된 서버에 이 변경 사항을 알립니다.

APNS에 앱 등록에 대한 Apple 개발자 문서 및 FCM에 대한 Google 문서에 따르면 deviceId는 다음 경우에만 변경됩니다:

  • 앱이 다른 기기의 백업에서 복원됨
  • 사용자가 앱 데이터를 지움
  • 사용자가 앱을 재설치함
  • 사용자가 다른 기기에 앱을 설치함

기기에 deviceId가 있는 경우 사용자가 Mattermost 서버에 로그인할 때 감사 로그 항목 login이 deviceId를 저장하고 deviceId도 데이터베이스의 세션 데이터에 추가됩니다. 그러나 다음을 포함한 여러 이유로 deviceId를 사용할 수 없는 경우가 있습니다:

  • 기기가 네트워크에 연결되어 있지 않음
  • 알림 서비스에 어떤 이유로 연결할 수 없음
  • 앱이 올바르게 서명되지 않음
  • 기기에 필요한 권한이 부여되지 않음

이러한 시나리오에서 login 감사 로그에는 deviceId가 없으며 세션 데이터에도 deviceId가 없습니다. 앱이 나중에 deviceId를 받으면 기기는 서버에 새 deviceId를 전송하여 attachDeviceId 감사 로그를 생성하고 deviceId를 데이터베이스의 세션 데이터에 추가합니다.

deviceId는 애플리케이션과 관련이 있으므로 모바일에서도 웹 브라우저를 통한 연결에는 deviceID가 없습니다.

모바일 메시지 알림 로그는 어디서 찾을 수 있습니까?#

알림 메시지는 notifications.log 파일에 기록됩니다. 시스템 관리자는 config.json 파일에서 EnableFile을 true로 설정하고 FileLocation을 통해 선택적 파일 위치를 지정하여 알림 로그를 활성화해야 합니다. 위치가 구성되지 않으면 notifications.log 파일은 기본 Mattermost 디렉터리에 저장됩니다. 자세한 내용은 로깅 구성 설정 문서를 참조하세요.

팀원/사용자는 기기 플랫폼에 따라 알림 로그에 액세스할 수 있습니다. Android 사용자는 logcat을 사용하여 로그를 볼 수 있습니다. iOS 사용자는 MacOS의 console app에서 로그에 액세스할 수 있습니다.

모바일 앱 로그를 수집하려면 어떻게 해야 합니까?#

자세한 내용은 모바일 앱 로그 수집에 관한 Mattermost 지원 지식 베이스 문서를 참조하세요.

모바일 앱 FAQ

Mattermost v12.0
원문 보기

요약

네, Mattermost 모바일 앱 v2.0을 사용하면 가능합니다. 기기에서 찾을 수 있는 데이터는 사용자가 Mattermost 서버에 로그인되어 있는지 여부에만 의존하며, 기기 연결 상태나 앱 상태와는 무관합니다. 또한 앱이 작업을 추적하는 데 사용하는 메타데이터도 캐시됩니다.

여러 Mattermost 서버에 연결할 수 있습니까?#

네, Mattermost 모바일 앱 v2.0을 사용하면 가능합니다. 모바일 v1.x는 한 번에 하나의 서버 연결만 지원합니다.

어떤 데이터가 저장됩니까?#

기기에서 찾을 수 있는 데이터는 사용자가 Mattermost 서버에 로그인되어 있는지 여부에만 의존하며, 기기 연결 상태나 앱 상태와는 무관합니다. 로그인된 상태에서 사용자가 일반적으로 볼 수 있는 모든 것이 기기에 저장될 수 있으며, 다음 콘텐츠가 포함됩니다:

  • 메시지
  • 메시지에 첨부된 파일 및 이미지
  • 현재 열린 채널에 있는 사람들의 프로필 사진, 사용자 이름 및 이메일 주소

또한 앱이 작업을 추적하는 데 사용하는 메타데이터도 캐시됩니다. 메타데이터에는 사용자 ID, 채널 ID, 팀 ID 및 메시지 ID가 포함됩니다.

현재 연결된 모바일 기기에서는 캐시를 원격으로 재설정할 수 없습니다.

푸시 알림은 어떻게 됩니까?#

푸시 알림 저장은 기기의 운영 체제에서 관리합니다. Mattermost는 메시지 텍스트나 채널 이름을 포함하지 않는 제한된 정보를 전송하도록 구성할 수 있으며, 푸시 알림을 전혀 전송하지 않도록 구성할 수도 있습니다.

데이터는 어디에 저장되고 어떻게 보호됩니까?#

데이터는 앱의 로컬 저장소에 저장됩니다. 기기가 설치된 앱에 일반적으로 제공하는 보안 조치로 보호됩니다.

데이터는 얼마나 오래 저장됩니까?#

데이터는 사용자가 로그아웃하거나 일반 캐시 관리 중에 삭제될 때까지 저장됩니다. 사용자 계정을 비활성화하면 강제 로그아웃되고 기기에서 데이터가 삭제됩니다.

사용자 계정이 비활성화된 후 데이터는 어떻게 처리됩니까?#

사용자가 앱에서 로그아웃하면 앱 데이터가 기기에서 삭제됩니다. 계정이 비활성화될 때 사용자가 로그인 상태이면 비활성화 후 1분 이내에 시스템이 사용자를 로그아웃시킵니다. 그 후 모든 앱 데이터가 기기에서 삭제됩니다.

서버에서 파일 첨부가 활성화된 경우 사용자는 메시지에 첨부된 파일을 다운로드하여 로컬 파일 시스템에 저장할 수 있습니다. 다운로드된 후 파일은 앱의 제어 밖에 있으며 기기에 무기한 남아 있을 수 있습니다.

메시지가 사전 로드됩니까?#

아니요. 메시지는 요청에 따라 기기로 전송됩니다. 사용자가 위로 스크롤하거나 채널을 전환할 것을 예상하여 사전 로드되지 않습니다.

자체 푸시 알림 서버를 호스팅하려면 모바일 앱을 컴파일해야 합니까?#

네. 자체 푸시 알림 서버를 호스팅하려면 모바일 앱을 컴파일해야 합니다. 자체 모바일 앱을 컴파일하는 방법은 문서를 참조하세요.

푸시 알림은 어떻게 작동합니까?#

Mattermost 서버는 호스팅된 푸시 프록시 서버로 푸시 알림을 전송하고, 이 서버는 Apple과 Google이 제공하는 모바일 푸시 알림 서비스를 통해 전달합니다.

푸시 알림이 신뢰할 수 있는 소스에서 오는지 확인하기 위해 Apple과 Google은 모바일 앱 자체에 컴파일된 비밀에 해당하는 키 또는 서명을 사용하는 서비스에서 전송된 푸시 알림만 허용합니다.

전체 프로세스는 다음과 같습니다:

  1. 개인 네트워크에서 실행 중인 Mattermost 서버에서 푸시 알림을 트리거하는 작업이 감지됩니다.
  2. Mattermost 서버는 개인 네트워크에서 자체 호스팅되거나 Mattermost, Inc.에서 공개적으로 호스팅되는 Mattermost 푸시 알림 서비스(MPNS)로 푸시 알림 메시지를 전송합니다.
  3. MPNS는 TLS 연결을 통해 Apple 푸시 알림 서비스(APNS) 또는 Google의 Firebase Cloud Messaging(FCM) 서비스로 푸시 알림 메시지를 전송합니다.
  • Apple로 전송된 경우 메시지에는 iOS 앱에 컴파일된 비밀에 해당하는 서명이 있습니다.
  • Google로 전송된 경우 메시지는 Android 앱에 컴파일된 비밀에 해당하는 키를 사용합니다.

iOS 또는 Android를 사용하든 관계없이 MPNS는 모바일 앱에 컴파일된 적절한 비밀에 액세스할 수 있어야 합니다.

즉, Apple App Store 또는 Google Play Store의 Mattermost 앱을 사용하는 경우 Mattermost, Inc.의 호스팅된 푸시 알림 서비스를 사용해야 합니다. 앱을 직접 컴파일하는 경우 해당 비밀이 있는 자체 MPNS도 컴파일하고 사용해야 합니다.

  1. APNS 또는 FCM은 TLS를 통해 MPNS로부터 푸시 알림 메시지를 받은 다음 표시할 사용자의 iOS 또는 Android 기기로 메시지를 전달합니다.
Note

iOS 및 Android 애플리케이션에서 푸시 알림을 사용하면 Apple 또는 Google이 제어하는 서버에서 푸시 알림 내용이 표시되고 암호화되지 않는 순간이 있습니다. 이는 모든 iOS 또는 Android 앱의 표준입니다. 이러한 이유로 Mattermost Enterprise에서 푸시 알림에서 Mattermost 메시지 내용을 생략하거나 알림이 기기에 도달하면 서버에서 메시지 내용을 가져오도록 구성하는 옵션을 사용할 수 있습니다. 자세한 내용은 구성 설정 문서를 참조하세요.

TLS v1.3이 지원됩니까?#

네. Mattermost 모바일 앱 v2.0은 WebSocket 연결에 대해 TLS v1.2와 TLS v1.3을 모두 지원합니다.

모바일 푸시 알림에서 전송되는 게시물 메타데이터는 무엇입니까?#

다음 게시물 메타데이터가 모든 푸시 알림에서 전송됩니다:

  • Team ID
  • Channel ID
  • Post ID
  • User ID (게시물 작성자)
  • Username (게시물 작성자 또는 웹훅 재정의 사용자 이름)
  • Root ID (게시물이 스레드에 있는 경우에만)
  • Type (푸시 알림 생성 또는 지우기)
  • Category (iOS 전용, 알림에 답장할 수 있는지 결정)
  • Badge number (알림이 수신될 때 앱 아이콘의 알림 배지가 설정되어야 하는 값)

푸시 알림 콘텐츠에 대한 시스템 콘솔 설정에 따라 추가 메타데이터가 전송될 수 있습니다:

  • 발신자 및 채널 이름이 포함된 일반 설명: Channel name 메타데이터가 포함됩니다.
  • 알림 페이로드에서 전송된 전체 메시지 콘텐츠: Post content 및 Channel name 메타데이터가 포함됩니다.
  • 수신 시 서버에서 가져온 전체 메시지 콘텐츠 (Mattermost Enterprise에서 사용 가능): Post content 및 Channel name은 알림 페이로드에 포함되지 않으며, 대신 Post ID를 사용하여 푸시 알림이 기기에서 수신된 후 서버에서 Post content 및 Channel name을 가져옵니다.

ID 전용 푸시 알림을 사용하여 알림 콘텐츠가 서드파티 서비스에 노출되지 않도록 하려면 어떻게 해야 합니까?#

모바일 데이터 개인 정보와 관련하여 많은 조직이 메시징 데이터의 안전한 처리를 우선시하며, 특히 미션 크리티컬하거나 독점적인 정보를 포함할 수 있는 경우에는 더욱 그렇습니다. 이러한 조직은 기기에 도달하기 전에 데이터가 Apple 푸시 알림 서비스(APNS) 또는 Google Firebase Cloud Messaging(FCM)과 같은 서드파티 기관을 통과해야 하기 때문에 모바일 알림 사용에 대한 우려가 있을 수 있습니다.

이는 엄격한 규정 준수 요구 사항 하에 운영되며 외부 기관에 메시지 데이터를 노출할 수 없는 조직에 잠재적인 위험을 제기합니다. 이를 해결하기 위해 전체 메시지 데이터 대신 알림 페이로드에 고유한 메시지 ID만 전송하여 Mattermost 푸시 알림 메시지 데이터를 더 잘 보호하는 옵션을 제공합니다(Mattermost Enterprise에서 사용 가능). 기기가 ID를 수신하면 서버에서 직접 메시지 콘텐츠를 가져와 평소와 같이 알림을 표시합니다.

APNS 및 FCM과 같은 외부 기관은 ID만 처리하며 메시지 자체의 어떤 부분도 읽을 수 없습니다. 조직에 엄격한 개인 정보 또는 규정 준수 요구 사항이 있는 경우 ID 전용 푸시 알림 설정은 팀원들이 모바일 푸시 알림의 혜택을 받을 수 있도록 하면서 높은 수준의 개인 정보를 제공합니다.

다음 페이로드는 ID 전용 설정을 사용할 때 푸시 알림 서비스로 전송되는 JSON의 예를 보여줍니다:

&#123;
    "ack_id": "nnfbqk5bnffe5karxuzs8o5rec",
    "platform": "apple_rn",
    "server_id": "aoej8izzfffr9e67d6uz3g387h",
    "device_id": "32f198dbdd7427be7e6f03ba721ffdceba58c3f0bfa9c4655a6e7cc8271ba539",
    "post_id": "77d9cs9aq3b1fpoepbdbmqfs4c",
    "category": "CAN_REPLY",
    "message": "You've received a new message.",
    "badge": 3,
    "channel_id": "et3ghiycm7g7bb41ihg85pqgah",
    "type": "message",
    "sender_id": "g774dzud4tgaxgphso4wm8xrxe",
    "version": "v2",
    "is_id_loaded": true
&#125;

다음 정의가 적용됩니다:

  • ack_id: 전송된 알림이 기기에서 수신되었는지 확인하는 알림당 생성된 임시 식별자(서버의 나머지 모델에 대한 식별자를 생성하는 것과 동일한 방법 사용). 이 정보는 Mattermost 서버의 notifications.log 파일에서 확인할 수 있습니다. ack_id는 전송된 알림이 수신되었는지 확인하기 위해 모바일 앱에서 Mattermost 서버로 수신 확인을 전달하는 데만 사용됩니다.
  • server_id: 서버에서 생성된 서버 식별자로 DiagnosticId라고 합니다. 향후 이 값은 모바일 앱(다중 서버 지원)에서 알림이 속한 서버를 식별하는 데 사용됩니다.
  • device_id: 기기가 알림을 수신하도록 허용할 때 APNs 및 FCM이 반환하는 토큰입니다. 따라서 사용자가 Mattermost에 로그인하면 Mattermost는 이 device_id를 세션에 첨부하기 위해 전송합니다. 세션이 종료되면 세션 레코드가 제거되므로 device_id는 더 이상 서버 데이터베이스에 없습니다. 사용자가 다시 로그인하면 식별자가 기기에 특정하기 때문에 동일한 값으로 device_id가 다시 등록됩니다. 이 값은 동일한 사람이 소유한 앱이나 기기 간에 동일하지 않지만 동일한 기기의 동일한 앱에서 사용자가 생성한 각 세션에 대해 동일합니다.
  • version: 모바일 앱에 데이터가 구조화된 방식을 알려 올바르게 파싱할 수 있습니다. 현재 값은 v2입니다.
  • is_id_loaded: (Mattermost Enterprise 전용) true이면 모바일 앱이 세부 정보가 페이로드에 포함되지 않으므로 서버에서 알림 내용을 찾습니다.

모바일 앱 보안 옵션은 무엇입니까?#

다음 보안 모바일 앱 배포 옵션이 사용 가능합니다:

  1. 모바일 앱에 대한 네트워크 연결 보안
  • HTTPS 및 WSS 네트워크 연결을 사용하여 전송을 암호화합니다.
  • 모바일 기기에서 모바일 VPN 클라이언트를 사용하여 개인 네트워크 내의 Mattermost 서버에 대한 보안 연결을 수립합니다.
  1. 다단계 인증 옵션 사용
  • 다단계 인증이 포함된 VPN 클라이언트를 사용하지 않는 경우 Mattermost 자체 내에서 또는 SSO 공급자를 통해 Mattermost에 인증할 때 MFA를 요구하는 것을 강력히 권장합니다.

푸시 알림 보안 옵션은 무엇입니까?#

푸시 알림 서비스 보안을 위한 다음 옵션이 사용 가능합니다:

  1. 알림 내용 보호
  1. 푸시 알림 비활성화
  • 보안 요구 사항에 따라 푸시 알림을 완전히 비활성화할 수도 있습니다. 기본 서버 설정에서 푸시 알림은 비활성화되어 있습니다.
  1. 직접 컴파일하는 앱에 대한 연결 암호화:
  • 개인 호스팅 Mattermost 푸시 알림 서비스(MPNS)를 사용할 때 다음 간에 암호화된 TLS 연결을 사용합니다:
    • MNPS와 Apple 푸시 알림 서비스(APNS)
    • MPNS와 Google의 Firebase Cloud Messaging(FCM)
    • MPNS와 Mattermost 서버
  1. Apple App Store 및 Google Play를 통해 설치된 앱 보안:
  • App Store 및 Google Play의 Mattermost 모바일 앱을 사용할 때 Mattermost의 호스팅 푸시 알림 서비스(HPNS)를 사용하기 위해 Mattermost Enterprise 또는 Professional의 연간 구독을 구매합니다.
Note

구성 세부 사항은 Mattermost 모바일 앱 배포 및 자체 앱 버전 배포 가이드를 참조하세요.

푸시 알림 수신에 지연이 발생하는 이유는 무엇입니까?#

Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM)이 Mattermost에서 기기가 푸시 알림을 받는 시간을 결정합니다. 따라서 지연은 일반적으로 해당 서비스로 인한 것입니다.

기기가 푸시 알림을 받는 기술적 흐름은 다음과 같습니다:

  1. 사용자가 Mattermost에서 메시지를 게시합니다.
  2. Mattermost 서버가 알림을 전송해야 하는지 확인합니다.
  3. 필요한 경우 Mattermost 서버가 푸시 알림이 포함된 페이로드를 푸시 프록시로 전송합니다.
  4. 푸시 프록시가 알림을 파싱하고 APNS 및 FCM으로 전달합니다.
  5. APNS 및 FCM이 Mattermost에 대한 푸시 알림이 있다는 것을 관련 기기에 알립니다. 이는 일반적으로 거의 즉시 발생하지만 몇 분 정도 지연될 수 있습니다.
  6. Mattermost가 알림을 처리하고 사용자의 기기에 표시합니다.

EMM(Enterprise Mobility Management) 공급자로 Mattermost를 배포하려면 어떻게 해야 합니까?#

Mattermost는 높은 개인 정보 및 커스텀 보안 요구 사항이 있는 고객이 자신만이 제어하는 키를 사용하여 모바일 앱 및 푸시 알림 서비스를 배포할 수 있도록 합니다.

EMM 공급자를 위한 AppConfig 사용에 대해 자세히 알아보기.

Mattermost 푸시 알림 서비스를 어떻게 호스팅합니까?#

먼저 Mattermost 호스팅 푸시 알림 서비스(HPNS)를 사용할 수 있습니다. 조직은 대신 자체 푸시 프록시 서버를 호스팅할 수도 있습니다. 이는 다음을 원하는 경우에 해당됩니다:

  1. Mattermost 모바일 앱 커스터마이징;
  2. 자체 푸시 알림 서비스 배포, 또는
  3. BlueCedar 또는 AppDome으로 모바일 앱을 재패키징(둘 다 공식적으로 지원되지 않지만 일부 조직에서 성공적으로 배포됨).

앱을 화이트 레이블로 만들고 빌드 설정을 커스터마이징하려면 어떻게 해야 합니까?#

/assets/base 폴더의 모든 파일은 업스트림 버전의 앱에 대한 변경 사항과 충돌하지 않고 필요에 따라 재정의할 수 있습니다. 이를 위해:

  1. /assets/override 폴더를 생성합니다.
  2. /assets/base에서 교체하려는 파일이나 폴더를 /assets/override로 복사합니다.
  3. /assets/override의 파일을 변경합니다.

앱을 컴파일하거나 make dist/assets를 실행하면 해당 두 폴더의 내용이 충돌이 있는 경우 우선 순위가 /assets/override의 파일로 병합됩니다. 이미지와 같은 바이너리 파일의 경우 재정의된 파일이 기본 버전을 완전히 교체하지만 JSON 파일은 재정의된 복사본에 설정되지 않은 필드가 기본 버전을 사용하도록 병합됩니다.

이 기능을 사용하는 방법에 대한 더 구체적인 예는 다음 섹션을 참조하세요.

사용자를 위한 서버 URL을 사전 구성하려면 어떻게 해야 합니까?#

기본 config.json 설정을 재정의하고 모바일 앱을 직접 빌드하여 서버 URL 및 기타 설정을 사전 구성할 수 있습니다.

  1. mattermost-mobile 리포지터리를 포크합니다.
  2. 포크된 mattermost-mobile 리포지터리에서 /assets/override/config.json 파일을 생성합니다.
  3. assets/base/config.json에서 재정의하려는 모든 설정을 새로 생성된 /assets/override/config.json 파일에 복사하여 붙여넣습니다.
  4. 서버 URL을 재정의하려면 /assets/override/config.json에서 DefaultServerURL을 Mattermost 서버의 서버 URL로 설정합니다.
  5. (선택 사항) 사용자가 서버 URL을 변경하지 못하도록 하려면 AutoSelectServerUrl을 true로 설정합니다.
  6. (선택 사항) 원하는 다른 설정을 재정의합니다.

위를 완료한 후 /assets/override/config.json 파일은 다음과 같이 보입니다:

&#123;
    "DefaultServerURL": "my-mattermost-instance.example.com",
    "AutoSelectServerUrl": true,
    "ExperimentalUsernamePressIsMention": true
&#125;
  1. 마지막으로 Mattermost 모바일 앱과 Mattermost 푸시 프록시 서버의 자체 버전을 컴파일합니다.

Mattermost 모바일 앱에서 Google SSO가 작동하도록 하려면 어떻게 해야 합니까?#

Apple App Store 및 Google Play Store의 앱은 기본적으로 Google SSO를 지원할 수 없습니다. Google이 각 조직에 특정한 고유한 Google API 키를 요구하기 때문입니다.

Google SSO 지원이 필요한 경우 조직을 위한 커스텀 버전의 앱을 만들 수 있습니다. mattermost-mobile 리포지터리를 포크하고 앱을 직접 컴파일하기 전에 Google SSO 지원을 추가합니다. 관심이 있으시면 토론을 시작하기 위해 GitHub에서 이슈를 제출하세요.

딥 링크를 구성하려면 어떻게 해야 합니까?#

앱은 앱 설치 시 플랫폼별 구성을 확인합니다. 구성을 찾지 못하면 딥 링크 코드가 조용히 있고 퍼머링크는 일반 링크로 작동합니다.

iOS 설정

  1. 서버 루트의 .well-known 디렉터리에 apple-app-site-association 파일을 생성합니다. https://<your-site-name>/.well-known/apple-app-site-association을 탐색하여 액세스할 수 있어야 합니다. 파일 확장자가 없어야 합니다.

  2. 딥 링크를 처리하려면 다음 JSON을 apple-app-site-association 파일에 붙여넣습니다. appID 속성에 앱 ID를 배치하세요:

    { "applinks": { "apps": [], "details": [ { "appID": "<your-app-id-here>", "paths": ["/pl/*", "/channels/*"] } ] } }

  3. Apple 개발자 포털을 통해 앱에 관련 도메인 권한을 추가합니다.

  4. Xcode 권한 관리자를 통해 앱이 지원하는 도메인을 지정하는 권한을 추가합니다.

  5. 새 권한으로 앱을 설치하기 전에 브라우저에서 https://<your-site-name>/.well-known/apple-app-site-association으로 이동하여 apple-app-site-association 파일의 내용을 볼 수 있는지 확인합니다. 앱은 설치 시 이 파일을 확인하며, 발견되면 외부 퍼머링크가 앱을 열 수 있습니다.

iOS에서 딥 링크 구성에 대한 공식 문서는 여기에서 찾을 수 있습니다.

Android 설정

Android에서 딥 링크 구성을 위해 Android Studio의 App Links Assistant를 참조하세요.

내부 및 외부 네트워크에서 사용자를 연결하려면 어떻게 해야 합니까?#

글로벌 네트워크 트래픽 관리를 설정하여 모바일 앱으로 연결할 때 사용자를 내부 또는 외부 네트워크로 보낼 수 있습니다. 또한 내부 및 외부 트래픽에 두 가지 별도의 제한 계층을 가질 수 있습니다:

  • 내부 네트워크에서 기기별 VPN을 통한 개인 네트워크에 배포합니다.
  • 외부 네트워크에서 NGINX 프록시를 통한 TLS 상호 인증 및 데스크톱과 iOS를 위한 클라이언트 측 인증서로 배포합니다.

Microsoft Azure와 같은 많은 서비스는 네트워크 트래픽 관리 옵션을 제공하거나 서비스 파트너의 도움을 받을 수 있습니다.

IT 정책에서 기업 프록시 서버 사용을 요구하는 경우 모바일 푸시 알림을 받는 방법#

IT 정책에서 모든 아웃바운드 트래픽을 스캔하고 감사하기 위한 기업 프록시가 필요한 경우 다음 옵션이 사용 가능합니다:

프리-프록시 릴레이가 포함된 프록시 인식 구성으로 Mattermost 배포#

Mattermost 푸시 알림 서비스는 Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM) 서비스로 직접 트래픽을 전송하도록 설계되었습니다.

프록시 인식 구성에서 프리-프록시 릴레이는 Mattermost 푸시 프록시에서 메시지를 수락하고 최종 목적지로 전송하기 전에 내부 IT 요구 사항을 적용하는 기업 프록시로 전달합니다.

샘플 아키텍처 개요:

Mattermost 푸시 알림 서비스는 Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM) 서비스로 직접 트래픽을 전송하도록 설계되었습니다. 그러나 조직에서 모든 아웃바운드 트래픽을 스캔하고 감사하기 위한 기업 프록시가 필요한 경우 프리-프록시 릴레이가 포함된 프록시 인식 구성으로 Mattermost를 배포할 수 있습니다. 릴레이는 Mattermost 푸시 프록시에서 메시지를 수락하고, 내부 IT 요구 사항을 적용하는 기업 프록시로 전달한 다음 모바일 기기로 알림을 전달합니다. 이 구성에는 신뢰할 수 있는 루트 인증서가 필요합니다.

이를 통해 프리-프록시 릴레이는 APNS 역할을 하고 기업 프록시를 통해 최종 목적지로 요청을 전달할 수 있으며 APNS 트래픽이 프록시를 인식할 필요가 없습니다. APNS 트래픽은 /etc/hosts 항목을 통해 프리-프록시 릴레이로 리디렉션됩니다. 항목은 Mattermost 푸시 프록시가 프리-프록시 릴레이를 신뢰할 수 있도록 인증서에 서명하는 신뢰할 수 있는 CA를 사용합니다. 자세한 내용은 사용자 알림에 대한 Apple 개발자 문서를 참조하세요.

Google의 FCM 트래픽은 환경 변수를 통해 프록시를 인식하므로 이를 위한 조치가 필요하지 않습니다.

또한 APNS 트래픽은 HTTP/2를 요구하므로 Apple 기기로 푸시 알림을 전송하려면 기업 프록시 서버가 HTTP/2 요청을 지원해야 합니다. 프리-프록시 릴레이에도 HTTP/2 지원이 필요합니다.

DMZ 또는 신뢰할 수 있는 클라우드 환경에서 연결이 제한된 포스트-프록시 릴레이로 Mattermost 배포#

일부 레거시 기업 프록시 구성은 iOS 기기로 푸시 알림을 전송하기 위한 Apple의 HTTP/2 요청 요구 사항과 같은 현대 모바일 아키텍처의 요구 사항과 호환되지 않을 수 있습니다.

이 경우 포스트-프록시 릴레이를 배포하여 비호환 형식(예: HTTP/1.1)으로 기업 IT 프록시를 통과하는 Mattermost 서버의 메시지를 받아 HTTP/2로 변환하고 최종 목적지인 Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM) 서비스로 전달할 수 있습니다.

이 포스트-프록시 릴레이는 Mattermost 푸시 프록시 설치 가이드를 사용하여 커스텀 보안 및 규정 준수 요구 사항을 충족하기 위한 연결 제한과 함께 구성할 수 있습니다.

DMZ 대신 내부 승인 및 정책에 따라 AWS 또는 Azure와 같은 신뢰할 수 있는 클라우드 환경에서 호스팅할 수도 있습니다.

Mattermost 푸시 알림 서비스는 Apple 푸시 알림 서비스(APNS) 및 Google Fire Cloud Messaging(FCM) 서비스로 직접 트래픽을 전송하도록 설계되었습니다. 그러나 조직에서 모바일 기기로 푸시 알림을 전송하기 위한 HTTP/2 요청을 지원하지 않는 경우 포스트-프록시 릴레이를 배포하여 Mattermost 서버의 메시지를 받아 비호환 형식에서 변환한 다음 최종 목적지로 전달할 수 있습니다. 포스트-프록시 릴레이는 커스텀 보안 및 규정 준수 요구 사항을 충족하기 위해 연결 제한을 사용하여 구성할 수 있습니다.

기업 프록시 서버를 우회하도록 Mattermost 푸시 알림 프록시 허용 목록 등록#

내부 IT 정책 및 승인된 면제/예외에 따라 기업 프록시 없이 Apple 푸시 알림 서비스(APNS)에 직접 연결하도록 Mattermost 푸시 프록시를 배포하도록 선택할 수 있습니다.

이 옵션을 위해 Apple에서 하나의 서브도메인과 포트를 허용 목록에 등록해야 합니다:

  • 개발 서버: api.development.push.apple.com:443
  • 프로덕션 서버: api.push.apple.com:443

앱 스토어 버전의 Mattermost 모바일 앱 실행#

Apple App Store 또는 Google Play Store에서 Mattermost가 호스팅하는 모바일 애플리케이션을 사용하고 기업 프록시를 통해 Mattermost 호스팅 푸시 알림 서비스(HPNS)에 연결할 수 있습니다.

Note

Mattermost의 호스팅 애플리케이션 사용은 AppConfig를 통한 기업 이동성 관리 솔루션으로 배포할 수 있습니다. 단, 래핑은 지원되지 않습니다. 자세한 내용은 제품 문서를 참조하세요.

deviceId 동작 방식#

deviceId는 Apple 푸시 알림 서비스(APNs) 및 Firebase Cloud Messaging(FCM)과 같은 푸시 알림 서비스가 제공하는 식별자로, 기기, 앱 및 알림 서비스 간의 관계를 식별합니다.

앱이 시작될 때 푸시 알림 권한이 활성화된 경우 앱은 deviceId를 얻기 위해 해당 알림 서비스(iOS의 경우 APNs, Android의 경우 FCM)에 연결을 시도합니다. deviceId가 변경되면 앱은 연결된 서버에 이 변경 사항을 알립니다.

APNS에 앱 등록에 대한 Apple 개발자 문서 및 FCM에 대한 Google 문서에 따르면 deviceId는 다음 경우에만 변경됩니다:

  • 앱이 다른 기기의 백업에서 복원됨
  • 사용자가 앱 데이터를 지움
  • 사용자가 앱을 재설치함
  • 사용자가 다른 기기에 앱을 설치함

기기에 deviceId가 있는 경우 사용자가 Mattermost 서버에 로그인할 때 감사 로그 항목 login이 deviceId를 저장하고 deviceId도 데이터베이스의 세션 데이터에 추가됩니다. 그러나 다음을 포함한 여러 이유로 deviceId를 사용할 수 없는 경우가 있습니다:

  • 기기가 네트워크에 연결되어 있지 않음
  • 알림 서비스에 어떤 이유로 연결할 수 없음
  • 앱이 올바르게 서명되지 않음
  • 기기에 필요한 권한이 부여되지 않음

이러한 시나리오에서 login 감사 로그에는 deviceId가 없으며 세션 데이터에도 deviceId가 없습니다. 앱이 나중에 deviceId를 받으면 기기는 서버에 새 deviceId를 전송하여 attachDeviceId 감사 로그를 생성하고 deviceId를 데이터베이스의 세션 데이터에 추가합니다.

deviceId는 애플리케이션과 관련이 있으므로 모바일에서도 웹 브라우저를 통한 연결에는 deviceID가 없습니다.

모바일 메시지 알림 로그는 어디서 찾을 수 있습니까?#

알림 메시지는 notifications.log 파일에 기록됩니다. 시스템 관리자는 config.json 파일에서 EnableFile을 true로 설정하고 FileLocation을 통해 선택적 파일 위치를 지정하여 알림 로그를 활성화해야 합니다. 위치가 구성되지 않으면 notifications.log 파일은 기본 Mattermost 디렉터리에 저장됩니다. 자세한 내용은 로깅 구성 설정 문서를 참조하세요.

팀원/사용자는 기기 플랫폼에 따라 알림 로그에 액세스할 수 있습니다. Android 사용자는 logcat을 사용하여 로그를 볼 수 있습니다. iOS 사용자는 MacOS의 console app에서 로그에 액세스할 수 있습니다.

모바일 앱 로그를 수집하려면 어떻게 해야 합니까?#

자세한 내용은 모바일 앱 로그 수집에 관한 Mattermost 지원 지식 베이스 문서를 참조하세요.