2012/10/30

URLスキーム

SySightはURLスキームによって、とてもパワフルに動作します。
その仕様は洗練されていてるので、ぜひ他のアプリケーションから呼び出してその機能を実感してください。



スキーム+ホスト+クエリ郡で呼び出すことで、命令を実行できます。
クエリ郡に与えるパラメータは、URLエンコードしたものを与えます。

スキーム
・sysight://
Sysightを起動します。


ホスト
・open
ただ起動するだけです。他の文字列でも構いません。

・free
メモリを解放します。

・allkill
メモリを解放します。但し、Sysight自身も終了します。

クエリ
・music=[BOOL]
メモリ解放時に音楽を停止するか否かを決定します。
BOOLにYES,true,1等を与える事で、音楽を停止せずにメモリ解放することが出来ます。

・redirect=[URL]
作業終了後、[URL]を呼び出します。
Sysightが終了した場合は再起動時に同じURLを呼び出します。

・background=[flag]
バックグラウンド動作を切り替えます。[flag]=YESでバックグラウンド動作を設定、それ以外で解除します。

・get=[parms]
[parms]に必要なパラメータをJSON配列(Array)で与えます。
redirectで指定した[URL]の中の"%@"がパラメータのJSON文字列に置換されます。
置換されるJSONは{パラメータ:値}の辞書(Object)となっています。
パラメータと得られるデータは以下の通りです。
 ・app
 起動中のアプリケーションのプロセスを配列で渡します。
 アプリケーションはIDとNameから成る辞書となっています。
 ・process
 全てのプロセスを配列で渡します。
 ・memory
 現在のメモリの状態を辞書で渡します。
 最大メモリ、使用中、非使用中、固定中、その他、空きメモリがそれぞれ、
 max、active、inactive、wire、other、freeに与えられます。
 ・cpu
 過去30秒間のCPU使用率を配列で渡します。
 ・battery
 バッテリーの状態を辞書で渡します。
 levelとstateが含まれます。


例1) sysight://free
Sysightを起動し、メモリを開放します。

例2) sysight://open?redirect=http://www.google.com
Sysightを起動しつつ、SafariでGoogleを起動します。

例3) sysight://free?redirect=libhttp:
Sysightを起動し、メモリを開放した後にLibingを起動します。

例4) sysight://open?redirect=libscript://Alert?%@&get=%5B%22app%22%2C%22memory%22%5D
Libing側にブックマークレットを追加してから実行します。
LibingでアプリケーションとメモリーのJSON文字列を確認します。

24 件のコメント:

  1. なんだかわかりません。具体例で教えてください。
    ランチャー何とかなんてわかりません。
    よろしくお願いします。

    返信削除
    返信
    1. Safariで適当なページをブックマークし、URLをsysight://freeに書き換えます。
      そのブックマークを利用することで、これらの機能を利用することが出来ます。
      ランチャーとは、そのようなブックマークを登録し、Safariよりも使いやすくしたアプリケーションの事です。

      削除
  2. 音楽を止めずにメモリーを解放するにはどうすればいいですか?

    説明を読んでも分かりませんでした。

    よろしくお願いします。

    返信削除
    返信
    1. sysight://free
      これが通常のメモリ解放用のURLになります。
      クエリと言いますのは、URLの?以降の文字列になります。
      複数のクエリを与える場合は、&を挟みます。

      ご質問は音楽を止めずに〜ということなので、URLは
      sysight://free?music=YES
      となります。

      削除
  3. 使い方紹介ページを参考にallkillを試したのですが、SySight本体は終了せずにとどまったままのようです。仕様通りに終了してもらいたいのですが…。こちらiPhone4S、iOS6.1.3最新です。拝

    返信削除
    返信
    1. URLが正しいか、もう一度ご確認下さい。
      単に終了するだけであれば、sysight://allkillとなります。

      削除
  4. allkill後のアプリ自身が終了とは、マルチタスクからも消えている状態のことですか?

    返信削除
    返信
    1. 仰るマルチタスクというのが何を指すのかは察しかねますが、
      プロセスとしてのSySightは終了しています。
      ホームボタンをダブルクリックした場合のタスク一覧(アプリの起動履歴)は残りますが、アプリケーション自体は動作していません。

      削除
  5. allkillした後の、アプリ履歴を消す方法はありますか?

    返信削除
    返信
    1. ありません。iOSにおいて当該操作を行うアプリケーションを作成することは不可能です。

      削除
  6. appのプロセスを配列で渡したいのですが、どのようなURLスキームになるでしょうか?

    返信削除
    返信
    1. どのアプリに渡したいか、そのアプリのURLスキームの仕様等貼って頂けると助かります。
      sysight://open?redirect=hoge://fuga?%25%40&get=%5B%22app%22%5D
      上記URLスキームの場合、リダイレクト先がhoge://fuga?[appの配列のJSON(UTF8エンコ済み)]となります。

      削除
    2. ああすいません、正しくは、{app: appの配列}のJSON文字列ですね。
      記事最下部のサンプルにLibingを使った例がありますので、そちらもご参照下さい。

      削除
  7. Q.1 音楽を止めずにallkillを実行し、最後にSySightの画面で解放できたメモリの円グラフを確認するには下記の要領でしょうか?

    sysight://allkill?music=YES&redirect=sysight://

    Q.2 上記のURLだと、最後にアプリの画面には自動的に遷移しないので、ディスプレイ上部に表示される通知をタップしています。
    通知をタップせずにSySightの画面を表示させる方法があれは知りたいです。

    返信削除
    返信
    1. A1.
      allkillを実行した場合は、確実にSySightが終了します。
      その場合のredirectはSySight起動時のリダイレクト先を指定するもので、この場合は指定する意味がありません。

      A2.
      ホーム画面からURLスキームを実行することは出来ないので、正常な仕様です。
      通知を表示するのは、その対策でもあります。

      削除
    2. 解決しました。ご回答ありがとうございました。

      削除
  8. 使い方は大丈夫なんですが
    設定にあるバックグラウンドで監視とは何をしているのでしょうか?
    基本offで大丈夫なのかな・・・?

    返信削除
    返信
    1. 通知機能のページに詳細がありますので、ご覧下さい。
      バックグラウンド監視を有効にすることで、通知機能をご利用頂くことができます。

      削除
  9. 質問です。freeを実行した後に自動で他のアプリを起動するには

    sysight://free?open?redirect=fb119355104914816:

    これでいいのでしょうか?

    返信削除
    返信
    1. sysight://free?redirect=fb119355104914816:
      で良いです。

      削除
    2. ありがとうございます。
      何回か試してみましたが、失敗するときがあります。
      これはどうしようもないですかね?

      削除
    3. 失敗というのは、アプリがクラッシュするということですか?
      その場合は、再度SySightを起動した場合にリダイレクトする仕様となっております。

      削除
    4. そうですね、freeの動作をしてる段階で強制終了したり、それが終わってもアプリの起動がしなかったりですね。

      削除
  10. 多分使い方を動画にして解説してみてはどうでしょうか?

    返信削除

Powered by Blogger.