セカンダリ タイルを作成する Windows ストア アプリがあります。タイルがクリックされたときに、アプリで実質的にオフライン機能を実行する必要があります (つまり、アプリに戻りたくはありませんが、アプリで何かを実行してから終了する必要があります)。この場合、たとえば、電子メール クライアントを起動します。これが私がこれまでのところです:
app.addEventListener("activated", function (args) {
if (args.detail.kind === activation.ActivationKind.launch) {
if (args.detail.arguments !== "") {
// Activation arguments are present that
// were declared when the secondary tile was pinned to Start.
args.setPromise(WinJS.UI.processAll().done(function () {
var emailaddress = args.detail.arguments;
var promise = Email.SendNewMail.sendEmail(emailaddress);
//promise.complete();
return;
}));
} else if (args.detail.previousExecutionState !== activation.ApplicationExecutionState.terminated) {
// TODO: This application has been newly launched. Initialize
// your application here.
} else {
// TODO: This application has been reactivated from suspension.
// Restore application state here.
}
...
メール機能はこちら:
sendEmail: function sendEmail(addess, subject, body) {
var mailto = new Windows.Foundation.Uri("mailto:?to=" + addess + "&subject=" + subject + "&body=" + body);
return Windows.System.Launcher.launchUriAsync(mailto);
}
現在発生しているエラーは、「オブジェクトがクライアントから切断されました」です。これは、プロミスが完了する前にプログラムが終了したことが原因であると想定しています。この種の動作は WInRT でどのように実現できますか?
アップデート:
これについて MS からフィードバックがあり、これが可能かどうかに関係なく、アプリを終了することは認定要件 3.6 に違反するため、サポートされていないことは間違いありません。