AppStudio AppFramework에서는 앱 간의 상호작용을 제어하는 컴포넌트에 사용되는 InterAppCommunication 플러그인을 제공합니다. 이 기능을 사용하기 전에 앱 간의 통신을 위해 기본 앱을 설정하는 것을 권장합니다. 이 기능을 사용하려면 먼저 다음과 같은 가져오기 문을 포함시켜야 합니다.
import ArcGIS.AppFramework.InterAppCommunication 1.0
이 기능의 예시로 ArcGIS AppStudio 또는 AppStudio 샘플 GitHub 저장소에서 제공되는 샘플 앱을 참고하세요.
이메일
AppStudio 3.1 이전 버전의 경우 미리 입력된 이메일을 앱에 통합하기 위한 최상의 방법은 UrlInfo 컴포넌트를 사용하는 것이었습니다. 즉, queryParameters 등록정보를 사용하여 mailto URL을 통해 이메일의 제목과 본문을 전달했습니다. 다음 코드 샘플에서는 UrlInfo 컴포넌트를 사용하여 시스템 세부정보가 포함된 이메일을 생성합니다.
Button {
text: "Generate Email"
onClicked: {
var urlInfo = AppFramework.urlInfo("mailto:example@example.com"), //Instantiates UrlInfo with an email address
deviceDetails = [ //Collects information about both the device and app
"%1: %2 (%3)".arg("Device OS").arg(Qt.platform.os).arg(AppFramework.osVersion),
"%1: %2".arg("Device Locale").arg(Qt.locale().name),
"%1: %2".arg("App Version").arg(app.info.version),
"%1: %2".arg("AppStudio Version").arg(AppFramework.version),
];
urlInfo.queryParameters = { //Uses queryParameters property to populate email subject and body
"subject": "%1 %2".arg("Feedback for").arg(app.info.title),
"body": "\n\n%1".arg(deviceDetails.join("\n"))
};
Qt.openUrlExternally(urlInfo.url); //Uses Qt framework to open constructed UrlInfo
}
}
하지만 이 방법의 경우 이메일을 받는 사람의 주소를 둘 이상 지정하거나 첨부 파일을 추가하는 것이 허용되지 않는 제한이 있습니다. 따라서 AppStudio 3.1에는 미리 입력된 이메일 초안이 기기의 기본 이메일 클라이언트에 열리도록 특별히 설계된 EmailComposer 컴포넌트가 도입되었습니다.
다음 코드 샘플에서는 EmailComposer 컴포넌트를 사용하여 위의 UrlInfo 샘플과 동일한 양식의 이메일을 생성하는 방법을 보여줍니다. 여기서는 cc 및 bcc 등록정보를 사용하여 여러 사람에게 이메일을 보냈습니다.
EmailComposer {
id: emailcomposer
to: "example@example.com"
cc: ["example2@example.com", "example3@example.com"]
bcc: "example4@example.com"
subject: "Feedback for " + app.info.title
body:
"Device OS:" + Qt.platform.os + AppFramework.osVersion + "<p>" +
"Device Locale:" + Qt.locale().name + "<p>" +
"App Version:" + app.info.version + "<p>" +
"AppStudio Version:" + AppFramework.version
html: true
}
Button {
id: openEmailButton
text: qsTr("Generate Email")
onClicked: {
emailcomposer.show()
}
}
비고:
EmailComposer 컴포넌트에는 플랫폼 간 동작의 차이가 많이 있습니다. 자세한 내용은 EmailComposer에 대한 API 레퍼런스를 참고하세요.