모바일 앱 FAQ
모바일 앱으로 여러 Mattermost 서버에 연결할 수 있나요?
네, Mattermost 모바일 앱 v2.0에서 가능합니다. 모바일 v1.x는 한 번에 하나의 서버 연결만 지원합니다.
어떤 데이터가 저장되나요?
기기에 남는 데이터는 오직 사용자가 Mattermost 서버에 로그인되어 있는지에 따라 결정되며, 기기의 연결 상태나 앱 상태와는 무관합니다. 로그인된 동안에는 사용자가 평소 볼 수 있는 모든 것이 기기에 저장될 수 있으며, 여기에는 다음 콘텐츠가 포함됩니다.
- 메시지
- 메시지에 첨부된 파일과 이미지
- 현재 열려 있는 채널에 있는 사람들의 프로필 사진, 사용자 이름, 이메일 주소
또한 앱이 동작을 추적하는 데 사용하는 메타데이터도 캐시됩니다. 메타데이터에는 사용자 ID, 채널 ID, 팀 ID, 메시지 ID가 포함됩니다.
현재 연결된 모바일 기기의 캐시를 원격으로 초기화할 수는 없습니다.
푸시 알림은 어떤가요?
푸시 알림의 저장은 기기의 운영 체제가 관리합니다. Mattermost는 메시지 본문이나 채널 이름을 포함하지 않는 제한된 정보만 보내도록 구성할 수 있으며, 푸시 알림을 아예 보내지 않도록 구성할 수도 있습니다.
데이터는 어디에 저장되며 어떻게 보호되나요?
데이터는 앱의 로컬 저장소에 저장됩니다. 기기가 설치된 앱에 일반적으로 제공하는 보안 조치로 보호됩니다.
데이터는 얼마나 오래 저장되나요?
데이터는 사용자가 로그아웃하거나 일반적인 캐시 관리 과정에서 삭제될 때까지 저장됩니다. 사용자 계정을 비활성화하면 강제 로그아웃되고 이후 기기의 데이터가 삭제됩니다.
사용자 계정이 비활성화된 후 데이터는 어떻게 처리되나요?
사용자가 앱에서 로그아웃하면 앱 데이터가 기기에서 삭제됩니다. 계정이 비활성화될 때 사용자가 로그인 상태라면, 비활성화 후 1분 이내에 시스템이 사용자를 로그아웃시킵니다. 이후 모든 앱 데이터가 기기에서 삭제됩니다.
서버에서 파일 첨부가 활성화되어 있으면 사용자는 메시지에 첨부된 파일을 내려받아 로컬 파일 시스템에 저장할 수 있습니다. 내려받은 뒤에는 해당 파일이 앱의 통제 범위를 벗어나며 기기에 무기한 남을 수 있습니다.
메시지가 미리 로드되나요?
아닙니다. 메시지는 필요할 때 기기로 전송됩니다. 사용자가 위로 스크롤하거나 채널을 전환할 것을 예상해 미리 로드하지 않습니다.
푸시 알림 서버를 직접 호스팅하려면 모바일 앱을 컴파일해야 하나요?
네. 푸시 알림 서버를 직접 호스팅하려면 모바일 앱을 컴파일해야 합니다. 직접 모바일 앱을 컴파일하는 방법은 맞춤 모바일 앱 배포 문서를 참고하세요.
푸시 알림은 어떻게 동작하나요?
Mattermost 서버는 호스팅된 푸시 프록시 서버로 푸시 알림을 보내고, 이 서버가 Apple과 Google이 제공하는 모바일 푸시 알림 서비스를 통해 알림을 중계합니다.
푸시 알림이 신뢰할 수 있는 출처에서 왔음을 보장하기 위해, Apple과 Google은 모바일 앱 자체에 컴파일된 시크릿에 대응하는 키나 서명을 사용하는 서비스가 보낸 푸시 알림만 허용합니다.
전체 과정은 다음과 같습니다.
사설망에서 실행 중인 Mattermost 서버가 푸시 알림을 유발하는 동작을 감지합니다.
Mattermost 서버가 사설망에 자체 호스팅되었거나 Mattermost, Inc.가 공개적으로 호스팅하는 Mattermost Push Notification Service(MPNS)로 푸시 알림 메시지를 보냅니다.
MPNS가 TLS 연결을 통해 Apple Push Notification Service(APNS) 또는 Google의 Firebase Cloud Messaging(FCM) 서비스로 푸시 알림 메시지를 보냅니다.
- Apple로 보낼 때는 iOS 앱에 컴파일된 시크릿에 대응하는 서명이 메시지에 포함됩니다.
- Google로 보낼 때는 Android 앱에 컴파일된 시크릿에 대응하는 키를 사용합니다.
iOS든 Android든 MPNS는 모바일 앱에 컴파일된 해당 시크릿에 접근할 수 있어야 합니다.
즉, Apple App Store나 Google Play Store의 Mattermost 앱을 사용한다면 Mattermost, Inc.가 호스팅하는 푸시 알림 서비스를 사용해야 합니다. 앱을 직접 컴파일한다면, 대응하는 시크릿을 담은 MPNS도 직접 컴파일해 사용해야 합니다.
APNS 또는 FCM이 TLS를 통해 MPNS로부터 푸시 알림 메시지를 받고, 이를 사용자의 iOS 또는 Android 기기로 중계해 표시합니다.
iOS 및 Android 애플리케이션에서 푸시 알림을 사용하면, Apple이나 Google이 통제하는 서버에서 푸시 알림 내용이 암호화되지 않은 상태로 노출되는 순간이 반드시 생깁니다. 이는 모든 iOS·Android 앱에 공통된 사항입니다. 이 때문에 Mattermost Enterprise에는 푸시 알림에서 Mattermost 메시지 내용을 제외하거나, 알림이 기기에 도달했을 때 서버에서 메시지 내용을 가져오도록 구성하는 옵션이 있습니다. 자세한 내용은 구성 설정 문서를 참고하세요.
TLS v1.3이 지원되나요?
네. Mattermost 모바일 앱 v2.0은 웹소켓 연결에 TLS v1.2와 TLS v1.3을 모두 지원합니다.
모바일 푸시 알림에는 어떤 게시물 메타데이터가 전송되나요?
모든 푸시 알림에는 다음 게시물 메타데이터가 전송됩니다.
Team IDChannel IDPost IDUser ID(게시물 작성자)Username(게시물 작성자 또는 웹훅에서 재정의한 사용자 이름)Root ID(게시물이 스레드에 있는 경우에만)Type(푸시 알림 생성 또는 해제)Category(iOS 전용, 알림에 답장할 수 있는지 결정)Badge number(알림 수신 시 앱 아이콘의 알림 배지에 표시할 숫자)
시스템 콘솔의 Push Notification Contents 설정에 따라 추가 메타데이터가 전송될 수 있습니다.
- Generic description with sender and channel names:
Channel name메타데이터가 포함됩니다. - Full message content sent in the notification payload:
Post content와Channel name메타데이터가 포함됩니다. - Full message content fetched from the server on receipt(Mattermost Enterprise에서 사용 가능):
Post content와Channel name이 알림 페이로드에 포함되지 않으며, 대신 기기에서 푸시 알림을 받은 후Post ID를 사용해 서버에서Post content와Channel name을 가져옵니다.
ID만 전송하는 푸시 알림으로 알림 내용이 서드파티 서비스에 노출되지 않게 하려면 어떻게 하나요?
모바일 데이터 프라이버시와 관련해 많은 조직이 메시징 데이터의 안전한 처리를 중요하게 여기며, 특히 미션 크리티컬하거나 독점적인 정보가 포함될 수 있을 때 더욱 그렇습니다. 이러한 조직은 데이터가 기기에 도달하기 전에 Apple Push Notification Service(APNS)나 Google Firebase Cloud Messaging(FCM) 같은 서드파티를 거쳐야 하기 때문에 모바일 알림 사용을 우려할 수 있습니다.
이는 엄격한 컴플라이언스 요구 사항을 따르며 메시지 데이터를 외부에 노출할 수 없는 조직에 잠재적 위험이 됩니다. 이를 해결하기 위해 Mattermost는 알림 페이로드에 전체 메시지 데이터 대신 고유한 메시지 ID만 전송해 푸시 알림 메시지 데이터를 더 강하게 보호하는 옵션을 제공합니다(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도 서버 데이터베이스에서 사라집니다. 사용자가 다시 로그인하면 이 식별자는 기기에 고유하므로 동일한 값으로 다시 등록됩니다. 같은 사람이 소유한 다른 앱이나 다른 기기에서는 값이 달라지지만, 같은 기기의 같은 앱에서 생성한 각 세션에서는 동일합니다.version: 모바일 앱이 데이터를 올바르게 파싱할 수 있도록 데이터 구조를 알려 줍니다. 현재 값은v2입니다.is_id_loaded: (Mattermost Enterprise 전용) true이면 알림 내용이 페이로드에 포함되어 있지 않으므로 모바일 앱이 서버에서 해당 내용을 찾습니다.
모바일 앱을 보호하기 위한 옵션에는 어떤 것이 있나요?
모바일 앱을 안전하게 배포하기 위한 옵션은 다음과 같습니다.
모바일 앱의 네트워크 연결 보호
- HTTPS 및 WSS 네트워크 연결로 전송을 암호화합니다.
- 모바일 기기에서 모바일 VPN 클라이언트를 사용해 사설망 내 Mattermost 서버와 안전한 연결을 수립합니다.
다중 인증 옵션 사용
- 다중 인증을 지원하는 VPN 클라이언트를 사용하지 않는다면, Mattermost 자체 또는 SSO 공급자를 통해 Mattermost 로그인 시 MFA를 요구하는 것을 강력히 권장합니다.
푸시 알림을 보호하기 위한 옵션에는 어떤 것이 있나요?
푸시 알림 서비스를 보호하기 위한 옵션은 다음과 같습니다.
알림 내용 보호
- 컴플라이언스 정책상 필요하다면 메시지 내용을 제외하는 등, 푸시 알림에 포함할 정보 유형을 선택할 수 있습니다. 서버 기본 설정에서는 메시지 내용이 꺼져 있습니다.
푸시 알림 비활성화
- 보안 요구 사항에 따라 푸시 알림을 완전히 비활성화할 수도 있습니다. 서버 기본 설정에서는 푸시 알림이 비활성화되어 있습니다.
직접 컴파일한 앱의 연결 암호화
- 사설로 호스팅한 Mattermost Push Notification Service(MPNS)를 사용할 때는 다음 구간에 암호화된 TLS 연결을 사용하세요.
- MPNS와 Apple Push Notification Service(APNS)
- MPNS와 Google의 Firebase Cloud Messaging(FCM)
- MPNS와 Mattermost 서버
- 사설로 호스팅한 Mattermost Push Notification Service(MPNS)를 사용할 때는 다음 구간에 암호화된 TLS 연결을 사용하세요.
Apple App Store 및 Google Play를 통해 설치한 앱 보호
- App Store와 Google Play의 Mattermost 모바일 앱을 사용하는 경우, Mattermost의 Hosted Push Notification Service(HPNS)를 사용하려면 Mattermost Enterprise 또는 Professional 연간 구독을 구매하세요.
구성에 관한 자세한 내용은 모바일 앱 배포와 맞춤 모바일 앱 배포 가이드를 참고하세요.
푸시 알림 수신이 가끔 지연되는 이유는 무엇인가요?
기기가 Mattermost의 푸시 알림을 언제 받을지는 Apple Push Notification Service(APNS)와 Google Firebase Cloud Messaging(FCM)이 결정합니다. 따라서 지연은 대개 이 서비스들에서 비롯됩니다.
기기가 푸시 알림을 받기까지의 기술적 흐름은 다음과 같습니다.
- 사용자가 Mattermost에 메시지를 게시합니다.
- Mattermost 서버가 알림을 보내야 하는지 판단합니다.
- 보내야 한다면, Mattermost 서버가 푸시 알림이 담긴 페이로드를 푸시 프록시로 보냅니다.
- 푸시 프록시가 알림을 파싱해 APNS와 FCM으로 중계합니다.
- APNS와 FCM이 해당 기기에 Mattermost 푸시 알림이 있음을 알립니다. 보통 거의 즉시 이루어지지만 몇 분 지연될 수 있습니다.
- Mattermost가 알림을 처리해 사용자 기기에 표시합니다.
엔터프라이즈 모빌리티 관리(EMM) 공급자와 함께 Mattermost를 배포하려면 어떻게 하나요?
Mattermost는 프라이버시 요구 수준이 높거나 맞춤 보안 요구 사항이 있는 고객이 자신만 통제하는 키를 사용해 모바일 앱과 푸시 알림 서비스를 배포할 수 있도록 지원합니다.
EMM 공급자를 위한 AppConfig 사용법 자세히 알아보기.
Mattermost 푸시 알림 서비스를 직접 호스팅하려면 어떻게 하나요?
우선 Mattermost Hosted Push Notification Service(HPNS)를 사용할 수 있습니다. 조직이 푸시 프록시 서버를 직접 호스팅할 수도 있습니다. 다음과 같은 경우에 해당합니다.
- Mattermost 모바일 앱을 맞춤 제작하려는 경우
- 푸시 알림 서비스를 직접 배포하려는 경우
- BlueCedar 또는 AppDome으로 모바일 앱을 재패키징하려는 경우(둘 다 공식 지원 대상은 아니지만 일부 조직에서 성공적으로 배포한 사례가 있습니다)
앱을 화이트라벨링하고 빌드 설정을 맞춤 구성하려면 어떻게 하나요?
/assets/base 폴더의 모든 파일은 앱 업스트림 버전의 변경 사항과 충돌하지 않으면서 필요에 따라 재정의할 수 있습니다. 방법은 다음과 같습니다.
/assets/override폴더를 만듭니다.- 교체하려는 파일이나 폴더를
/assets/base에서/assets/override로 복사합니다. /assets/override의 파일을 수정합니다.
앱을 컴파일하거나 make dist/assets를 실행하면 두 폴더의 내용이 병합되며, 충돌이 있으면 /assets/override가 우선합니다. 이미지 같은 바이너리 파일은 재정의한 파일이 기본 버전을 완전히 대체하지만, JSON 파일은 병합되어 재정의본에 설정되지 않은 필드는 기본 버전 값을 사용합니다.
이 기능의 구체적인 사용 예는 다음 섹션을 참고하세요.
사용자를 위해 서버 URL을 미리 구성하려면 어떻게 하나요?
기본 config.json 설정을 재정의하고 모바일 앱을 직접 빌드하면 서버 URL과 그 밖의 설정을 미리 구성할 수 있습니다.
- mattermost-mobile 저장소를 포크합니다.
- 포크한 mattermost-mobile 저장소에
/assets/override/config.json파일을 만듭니다. - 재정의하려는 설정을
assets/base/config.json에서 새로 만든/assets/override/config.json파일로 복사해 붙여넣습니다. - 서버 URL을 재정의하려면
/assets/override/config.json에서DefaultServerURL을 Mattermost 서버의 URL로 설정합니다. - (선택) 사용자가 서버 URL을 변경하지 못하게 하려면
AutoSelectServerUrl을true로 설정합니다. - (선택) 원하는 다른 설정도 재정의합니다.
위 과정을 마치면 /assets/override/config.json 파일은 대략 다음과 같은 모습이 됩니다.
{
"DefaultServerURL": "my-mattermost-instance.example.com",
"AutoSelectServerUrl": true,
"ExperimentalUsernamePressIsMention": true
}
- 마지막으로 Mattermost 모바일 앱과 Mattermost 푸시 프록시 서버를 직접 컴파일합니다.
Mattermost 모바일 앱에서 Google SSO를 사용하려면 어떻게 하나요?
Apple App Store와 Google Play Store의 앱은 기본 상태로는 Google SSO를 지원할 수 없습니다. Google이 조직마다 고유한 Google API 키를 요구하기 때문입니다.
Google SSO 지원이 필요하다면 조직 전용 맞춤 버전 앱을 만들 수 있습니다. mattermost-mobile 저장소를 포크해 Google SSO 지원을 추가한 뒤 직접 앱을 컴파일하세요. 관심이 있다면 GitHub에 이슈를 등록해 논의를 시작해 주세요.
딥 링크는 어떻게 구성하나요?
앱은 설치 시 플랫폼별 구성을 확인합니다. 구성이 없으면 딥 링크 코드는 아무 동작도 하지 않고 퍼머링크는 일반 링크처럼 동작합니다.
iOS 설정
- 서버 루트의
.well-known디렉터리에apple-app-site-association파일을 만듭니다.https://<your-site-name>/.well-known/apple-app-site-association으로 접근할 수 있어야 합니다. 파일 확장자는 없어야 합니다. - 딥 링크를 처리하려면 다음
JSON을apple-app-site-association파일에 붙여넣습니다.appID속성에 앱 ID를 반드시 넣으세요.
{
"applinks": {
"apps": [],
"details": [
{
"appID": "<your-app-id-here>",
"paths": ["**/pl/*", "**/channels/*"]
}
]
}
}
- Apple 개발자 포털에서 앱에 associated domains 엔타이틀먼트를 추가합니다.
- Xcode 엔타이틀먼트 관리자에서 앱이 지원하는 도메인을 지정하는 엔타이틀먼트를 추가합니다.
- 새 엔타이틀먼트를 적용한 앱을 설치하기 전에, 브라우저에서
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 Push Notification Service(APNS)와 Google Firebase Cloud Messaging(FCM) 서비스로 트래픽을 직접 보내도록 설계되었습니다.
프록시 인지 구성에서는 프리 프록시 릴레이가 Mattermost Push Proxy로부터 메시지를 받아, 내부 IT 요구 사항을 적용하는 회사 프록시로 전달한 뒤 최종 목적지로 전송합니다.
아래 아키텍처 개요 예시를 참고하세요.

이렇게 하면 프리 프록시 릴레이가 APNS 역할을 하며 회사 프록시를 통해 요청을 최종 목적지로 전달하므로, APNS 트래픽 자체가 프록시를 인지할 필요가 없습니다. APNS 트래픽은 /etc/hosts 항목을 통해 프리 프록시 릴레이로 리디렉션됩니다. 이 항목은 Mattermost Push Proxy가 프리 프록시 릴레이를 신뢰하도록 인증서를 서명하는 신뢰할 수 있는 CA를 사용합니다. 자세한 내용은 Apple 개발자 문서의 user notifications를 참고하세요.
Google의 FCM 트래픽은 환경 변수로 프록시를 인지하므로 별도 조치가 필요하지 않습니다.
또한 APNS 트래픽은 HTTP/2를 요구하므로, Apple 기기로 푸시 알림을 보내려면 회사 프록시 서버가 HTTP/2 요청을 지원해야 합니다. 프리 프록시 릴레이도 HTTP/2를 지원해야 합니다.
DMZ 또는 신뢰할 수 있는 클라우드 환경에 연결이 제한된 포스트 프록시 릴레이와 함께 Mattermost 배포
일부 레거시 회사 프록시 구성은 iOS 기기로 푸시 알림을 보내기 위해 Apple이 요구하는 HTTP/2 요청처럼 최신 모바일 아키텍처의 요구 사항과 호환되지 않을 수 있습니다.
이 경우 포스트 프록시 릴레이를 배포해, 회사 IT 프록시를 거쳐 호환되지 않는 형식(예: HTTP/1.1)으로 전달된 Mattermost 서버의 메시지를 받아 HTTP/2로 변환한 뒤 Apple Push Notification Service(APNS) 또는 Google Firebase Cloud Messaging(FCM) 서비스로 중계할 수 있습니다.
이 포스트 프록시 릴레이는 맞춤 보안·컴플라이언스 요구 사항에 맞는 연결 제한과 함께 Mattermost Push Proxy 설치 가이드로 구성할 수 있습니다.
DMZ 대신, 내부 승인과 정책에 따라 AWS나 Azure 같은 신뢰할 수 있는 클라우드 환경에 호스팅할 수도 있습니다.

회사 프록시 서버를 우회하도록 Mattermost 푸시 알림 프록시 허용 목록에 추가
내부 IT 정책과 승인된 예외 사항에 따라, 회사 프록시를 거치지 않고 Mattermost Push Proxy가 Apple Push Notification Service(APNS)에 직접 연결하도록 배포할 수도 있습니다.
이 옵션을 사용하려면 Apple의 서브도메인 하나와 포트 하나를 허용 목록에 추가해야 합니다.
- 개발 서버:
api.development.push.apple.com:443 - 프로덕션 서버:
api.push.apple.com:443
Mattermost 모바일 앱의 앱스토어 버전 실행
Apple App Store 또는 Google Play Store에서 Mattermost가 호스팅하는 모바일 애플리케이션을 사용하고, 회사 프록시를 통해 Mattermost Hosted Push Notification Service(HPNS)에 연결할 수 있습니다.
Mattermost가 호스팅하는 애플리케이션은 AppConfig를 통해 엔터프라이즈 모빌리티 관리 솔루션과 함께 배포할 수 있지만 래핑은 지원되지 않습니다. 자세한 내용은 제품 문서를 참고하세요.
deviceId의 동작 방식
deviceId는 Apple Push Notification service(APNs)나 Firebase Cloud Messaging(FCM) 같은 푸시 알림 서비스가 제공하는 식별자로, 기기·앱·알림 서비스 사이의 관계를 식별합니다.
앱이 시작될 때 푸시 알림 권한이 활성화되어 있으면, 앱은 해당 알림 서비스(iOS는 APNs, Android는 FCM)에 연결해 deviceId를 가져오려 시도합니다. deviceId가 변경되면 앱은 연결된 모든 서버에 이를 알립니다.
APNS에 앱을 등록하는 방법에 관한 Apple 개발자 문서와 FCM에 관한 Google 문서에 따르면, deviceId는 다음 경우에만 변경됩니다.
- 다른 기기의 백업에서 앱을 복원한 경우
- 사용자가 앱 데이터를 삭제한 경우
- 사용자가 앱을 다시 설치한 경우
- 사용자가 다른 기기에 앱을 설치한 경우
기기에 deviceId가 있으면 사용자가 Mattermost 서버에 로그인할 때 login 감사 로그 항목에 deviceId가 기록되고, 데이터베이스의 세션 데이터에도 추가됩니다. 다만 다음과 같은 여러 이유로 deviceId를 사용할 수 없는 경우도 있습니다.
- 기기가 네트워크에 연결되어 있지 않음
- 어떤 이유로든 알림 서비스에 접근할 수 없음
- 앱이 올바르게 서명되지 않음
- 기기에 필요한 권한이 부여되지 않음
이러한 경우 login 감사 로그와 세션 데이터에 deviceId가 포함되지 않습니다. 이후 앱이 deviceId를 받으면 기기가 새 deviceId를 서버로 보내 attachDeviceId 감사 로그를 생성하고, 데이터베이스의 세션 데이터에 deviceId를 추가합니다.
deviceId는 애플리케이션과 연결되므로, 모바일에서라도 웹 브라우저를 통한 연결에는 deviceId가 없습니다.
모바일 메시지 알림 로그는 어디에서 확인하나요?
알림 메시지는 notifications.log 파일에 기록됩니다. 시스템 관리자는 config.json 파일에서 EnableFile을 true로 설정해 알림 로그를 활성화해야 하며, FileLocation으로 파일 위치를 선택적으로 지정할 수 있습니다. 위치를 지정하지 않으면 notifications.log 파일은 기본 Mattermost 디렉터리에 저장됩니다. 자세한 내용은 로깅 구성 설정 문서를 참고하세요.
팀 구성원과 사용자는 기기 플랫폼에 따라 자신의 알림 로그에 접근할 수 있습니다. Android 사용자는 logcat으로 로그를 확인할 수 있습니다. iOS 사용자는 MacOS의 console app에서 로그에 접근할 수 있습니다.
모바일 앱 로그는 어떻게 수집하나요?
자세한 내용은 Mattermost 지원 지식 베이스의 모바일 앱 로그 수집 방법 문서를 참고하세요.