ページの先頭行へ戻る
Interstage Mobile Application Server V1.3.0 アプリケーション開発ガイド
FUJITSU Software

6.3 受信したメッセージからのアクション

通知領域(Android:通知バー/iOS:通知センター/Windows:通知領域)に表示されたメッセージをタップすると、一連のアクションが行えます。
actionタグでアプリを開く操作を行うために、以下のオプションをサポートします。

注意

Windowsでのアクション指定は、トースト通知のみサポートされているため、タイル通知、バッジ通知でのアクション指定はできません。

アクション フォーマット 備考
自アプリケーション起動 Androidの場合、action値に半角スペースまたは、指定したカスタムURLスキームに対応した連携アプリが存在しない場合に自アプリケーションが起動します。連携アプリが存在しない場合の規定動作については、・連携アプリが存在しない場合の既定動作についてを参照してください。
iOS、Windowsの場合、action指定の有無に関係なく自アプリケーションが起動します。
 
メール送信画面起動 action="mailto:TOアドレス?subject=件名&body=本文&cc=CCアドレス&bcc=BCCアドレス" mailtoスキーマをサポートしているメールアプリだけ起動可能。
ブラウザ起動 action="http(https):から始まるサイトのURL"  
連携アプリ起動 各連携アプリに依存します。
連携アプリを起動するには、カスタムURLスキームを利用します。また、URLにクエリ文字列を指定することにより、パラメータの受け渡しも可能です。
連携アプリが存在しない場合の規定動作については、・連携アプリが存在しない場合の既定動作について、連携アプリ側で必要となる設定及び、URL・クエリ文字列の取得については、・連携アプリ側で必要となる設定及び、URL・クエリ文字列取得についてを参照してください。
外部からの起動を許容している他のアプリケーション

iOS8からは、カテゴリを指定して、通知ダイアログに以下に示す"action1"、"action2"のような選択肢を設けることができます。
アクション

・連携アプリが存在しない場合の既定動作について

指定されたカスタムURLスキームに対応する連携アプリが存在しない場合の動作は、OSごとに以下のようになります。
OS 動作
Android 自アプリケーションが起動します。
iOS 自アプリケーションが起動します。
Windows 「ストアでアプリを探す」のダイアログが表示されます。

・連携アプリ側で必要となる設定及び、URL・クエリ文字列取得について

Android
カスタムURLスキームの定義をします。AndroidManifest.xmlで、アクションから起動するActivityに以下のような記述を追加します。(以下の例では、URLスキームを「fjp」、ホストを「sample」として設定しています。)
<intent-filter>
    <action android:name="任意" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:scheme="fjp" android:host="sample" />
</intent-filter>

URL・クエリ文字列を受け取る場合は、アクションから起動するActivityに以下のような記述を追加します。(以下の例では、受け取るURLを「fjp://sample?param1=abc」としています。)

Intent intent = this.getIntent();
// fjp://sample?param1=abcを取得
Uri uri = intent.getData();
// abcを取得
String param1 = intent.getStringExtra("param1");
iOS
カスタムURLスキームの定義をします。Targetを開き、InfoタブのURL Types欄を展開しURL Schemesに任意のURLスキームを入力します。

注意

  • iOS9でURLスキームを定義する場合は、info.plistに配列型のLSApplicationQueriesSchemesを記述し、配列要素として、使用するURLスキームを設定してください。info.plistに設定が無い場合、エラーとなってしまいます。
  • 定義したURLスキームがAppleが提供するアプリケーションにも定義されている場合、Appleのアプリケーションが優先して起動されます。また、Apple以外のアプリケーションに同一のURLスキームが定義されている場合、どちらが起動されるかは保証されないため、必ず固有のURLスキームを指定するようにしてください。

URL・クエリ文字列を受け取る場合は、AppDelegate.mを開き、以下のメソッドを実装します。
-(BOOL)application:(UIApplication*)application openURL:(NSURL*)url 
sourceApplication:(NSString*)sourceApplication annotation:(id)annotation
{
    // URLを文字列で取得
    NSString *strUrl = [url absoluteString];
    // クエリ文字列取得
    NSString *query = [url query];
    return YES;
}

注意

iOS9では、上記メソッドは非推奨となりましたので、iOS9で実装する場合は、以下のメソッドを実装してください。
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
{
    // URLを文字列で取得
    NSString *strUrl = [url absoluteString];
    // クエリ文字列取得
    NSString *query = [url query];
    return YES;
}
Windows

カスタムURLスキームの定義をします。Package.appxmanifestを開き、宣言タブの使用可能な宣言で「プロトコル」を追加し、プロパティの名前欄に任意のURLスキームを定義します。

URL・クエリ文字列を受け取る場合は、App.xaml.csを開き、以下のメソッドを実装します。

protected override void OnActivated(IActivatedEventArgs args)
{
    // 起動処理の実装(実装内容はアプリケーションに依存するため省略)

    // アクションから起動された場合true
    if (args.Kind == ActivationKind.Protocol)
    {
        // URL・クエリ文字列を受け取る
        ProtocolActivatedEventArgs ar = args as ProtocolActivatedEventArgs;
        // URLの取得
        Uri uri = ar.Uri;
        // クエリ文字列の取得
        string query = uri.Query;
    }

    Window.Current.Activate();
}