エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 の自動アップロード アプリ

2014/06/18

このトピックでは、アプリでバックグラウンド エージェントを使用して、写真ストレージ サービスに写真を自動的にアップロードする方法について説明します。自動アップロード機能を提供するアプリは、自動アップロード拡張機能に登録し、[設定] アプリから起動されたときに自動アップロード設定ページを起動する必要があります。アップロードを実行するために、自動アップロード アプリは ResourceIntensiveTask クラスを使用して、リソースを大量に消費するバックグラウンド エージェントを使用する必要があります。他のバックグラウンド エージェントとは異なり、自動アップロード アプリ用のリソースを大量に消費するエージェントの有効期限はありません。

重要:重要:

リソースを大量に消費するエージェントが実行されるために満たす必要がある、電話での制約が原因で、エージェントが特定の電話でまったく実行されない可能性があります。たとえば、ユーザーが Wi-Fi または PC にアクセスできない場合、携帯ネットワーク以外への接続を行うことはできず、リソースを大量に消費するエージェントは電話上で実行されません。また、リソースを大量に消費するエージェントは一度に 1 つのみ実行されるため、リソースを大量に消費するエージェントを使用するアプリがより多く電話にインストールされるほど、エージェントが実行される可能性はさらに低くなります。アプリを設計するときは、このことを考慮する必要があります。

このトピックは、次のセクションで構成されています。

自動アップロード機能を提供するアプリは、[設定] アプリから起動された場合、設定ページを起動します。[設定] アプリでは、[フォト+Camera] 設定ページの下部に [アプリ] リンクが表示されます。このリンクは、次の図に示されている自動アップロード [アプリ] ページ起動します。

Auto-upload apps from the Settings app

自動アップロードをサポートするアプリは、このページの一覧に表示されます。これらの各アプリは、タップされると、自動アップロード設定ページを起動します。

アプリが自動アップロードをサポートするように指定するには、Photos_Auto_Upload 拡張機能の登録をします。拡張機能は WMAppManifest.xml ファイルで指定します。Tokens 要素の直後、Extensions 要素内に、次の Extension 要素を使って自動アップロード拡張機能を指定します。


<Extension ExtensionName="Photos_Auto_Upload"
           ConsumerID = "{5B04B775-356B-4AA0-AAF8-6491FFEA5632}"
           TaskID="_default"/>


Windows Phone のマニフェスト デザイナーは拡張機能をサポートしていません。拡張機能を編集するには、XML (テキスト) エディターを使用します。詳細については、「Windows Phone 8 のアプリ マニフェスト ファイルを変更する方法」を参照してください。

アプリが [設定] アプリから起動された場合、特殊なキーワードを含むディープ リンク URI を使用してアプリが起動されます。ディープ リンク URI にキーワード ConfigurePhotosUploadSettings が含まれている場合は、アプリの設定ページが起動し、このページでユーザーは自動アップロードを構成できます。次のコードは、[設定] ページからの起動をアプリの自動アップロード設定ページにマップする URI マッパー クラスを示しています。

using System;
using System.Windows.Navigation;

namespace CustomMapping
{
    class CustomUriMapper : UriMapperBase
    {
        public override Uri MapUri(Uri uri)
        {
            // The incoming URI
            string tempUri = uri.ToString();

            // Search for a specific deep link URI keyword
            if (tempUri.Contains("ConfigurePhotosUploadSettings"))
            {
                // Launch to the auto-upload settings page.
                return new Uri("/AutoUploadSettingsPage.xaml", UriKind.Relative);
            }

            // Otherwise perform normal launch.
            return uri;
        }
    }
}

この例では、URI マッパーで、受信 URI を自動アップロード設定ページの URI に置き換えることによって、受信 URI を AutoUploadSettingsPage.xaml という名前のページにマップします。そのメソッドで返された URI はアプリのルート フレームによって使用され、アプリの開始時に最初のページを起動します。ルート フレームがカスタム URI マッパーを使用するのは、そのマッパーが、アプリの初期化時に割り当てられるからです。App.xaml.cs ファイルの CustomMapping.CustomUriMapper メソッドで InitializePhoneApplication という名前の URI マッパーがどのように割り当てられるかを次のコードに示します。

// Do not add any additional code to this method
private void InitializePhoneApplication()
{
    if (phoneApplicationInitialized)
        return;

    // Create the frame but don't set it as RootVisual yet; this allows the splash
    // screen to remain active until the application is ready to render.
    RootFrame = new PhoneApplicationFrame();
    RootFrame.Navigated += CompleteInitializePhoneApplication;

    // Handle navigation failures
    RootFrame.NavigationFailed += RootFrame_NavigationFailed;

    // Assign the custom URI mapper class to the application frame.
    RootFrame.UriMapper = new CustomMapping.CustomUriMapper();

    // Ensure we don't initialize again
    phoneApplicationInitialized = true;
}

自動アップロードをサポートするアプリは 2 つのパーツを必要とします。設定ページ (およびその他のページ) を表示するフォアグラウンド アプリ プロジェクトと、アップロードを実行するバックグラウンド エージェントです。

このバックグラウンド エージェントはリソースを大量に消費するエージェントである必要があります (Microsoft.Phone.Scheduler.ResourceIntensiveTask として登録されている必要があります)。リソースを大量に消費するエージェントは、通常、実行する機会があると、10 分間実行されます。特に、携帯ネットワーク以外の接続および外部電源が必要です。バックグラウンド エージェントとその制約の詳細については、「Windows Phone 8 のバックグラウンド エージェント」を参照してください。

自動アップロード アプリ用のリソースを大量に消費するエージェントを作成する場合、タスクの有効期限を設定しないでください。これによって、アプリを 14 日間開かなかった場合に、エージェントの有効期限が切れることがなくなります。

アプリで自動アップロードを実行できるようにするには、写真ストレージ Web サービス用のユーザー資格情報を入力するための方法をユーザーに提供する必要があります。フォアグラウンド アプリでは、このタスクの設定ページを使用できますが、同じページを使用する必要はありません。ユーザー資格情報を格納するには、ProtectedData クラスを使用してユーザー資格情報を暗号化することをお勧めします。詳細については、「Windows Phone 8 でデータを暗号化する方法」を参照してください。

バックグラウンド エージェントは、メディア ライブラリの監視と、アップロードが必要な写真の追跡を行います。また、電話の接続が切断された場合にアップロードを再開できるように、アップロードのステータスを追跡する必要があります。メディア ライブラリへのアクセスの詳細については、「Windows Phone 8 のデータ」の「メディア ライブラリ」を参照してください。

表示:
© 2014 Microsoft