x_外部Chrome拡張連携について - KanCraft/kanColleWidget GitHub Wiki

外部Chrome拡張連携について

  • 艦これウィジェットは、運営サーバに負荷をかけないように画像解析によって遠征/入渠/建造の終了時刻を取得しています
  • このタイマー情報を外部Chrome拡張と共有することで、より良いユーザ体験を提供することができるかもです
    • たとえば、iPhoneアプリで通知するとか

何と連携するか

  • "艦これウィジェット"以外のChrome拡張です
  • まずデフォルトで連携の設定はオフです
  • この設定をオンにしても連携は有効になりません
  • オンにしてなおかつ、連携先Chrome拡張からの連携要求があった場合に、これを許可して初めて連携がはじまります
  • 信頼できる連携先以外は、絶対に許可しないでください

何を共有するか

  • お使いのChromeブラウザ上で艦これウィジェットが取得できた遠征/入渠/建造などの終了時刻のみを共有します
  • それ以外の情報、たとえばユーザ情報などは一切共有しません

僕としては

  • 使わないんで、オフにしとけばいいと思います

以下開発者用

What is KanColleWidget API?

KanColleWidgetは「艦これ」でのユーザアクティビティをフックにし、自作OCRサーバに画像を送信して、入渠や建造にかかる時間を決定しています.

KanColleWidget APIは、艦これウィジェットがフックできたイベントや、決定した所要時間に、ユーザの承認のうえ他のChrome拡張(以下「クライアント」)から利用できるAPIです.

Overview

Subscribe API

Subscribe APIを利用することで、クライアントは艦これウィジェット内でフックできたイベントとその付随する情報(遠征IDや建造終了時間など)をリアルタイムでSubscribeすることができます.

request

下記のrequestでは、遠征出発時のイベントのsubscribeを登録できます

// request
{
    path: "/api/subscribe", // required string
    params: { // optional Object
        // !!caution!! `filter` is not implemented yet
        filter: ["mission"] // optional []string
    }
}

response

// response
{
    status: 201,
    message: "Your app started subscribing."
}

payload

正常にsubscribeできている場合は、艦これウィジェット内でイベントをフックしたときに以下のデータがchrome.runtime.sendMessageによって送信されます.

// payload
{
    timestamp: 1413681971814,// payloadが送信された時間
    event: {
        target: "mission",
        type: "created",
        finish: 1413683171797,// event.target(="mission")が終わる時間
        params: {
            format: "遠征帰投%d艦隊がまもなく帰投します",
            key: 2,// 遠征・疲労回復の場合は艦隊ID、それ以外の場合はドックIDになります
            label: "遠征帰投",// イベントの短縮名
            unit: "艦隊",// 遠征・疲労回復の場合は"艦隊"、それ以外の場合は"ドック"になります
            optional: {
                missionId: 1,// 手動で登録した場合など該当が無い場合は0になります
                title: "練習航海"
            }
        }
    }
}

sample

下記のサンプルでは、全てのイベントに対してsubscribeを登録します.

// Start subscribing.
var kcwExtId = "iachoklpnnjfgmldgelflgifhdaebnol";
var request = {
    path: "/api/subscribe"
};
chrome.runtime.sendMessage(kcwExtId,request,function(response) {
    console.log(response);
});

subscribeしているイベントを受け取るクライアントサイドのサンプルです.

// Define subscriber.
// Listening
var kcwExtId = "iachoklpnnjfgmldgelflgifhdaebnol";
chrome.runtime.onMessageExternal(function(message, sender) {
    if (sender.id == kcwExtId) {
        // This message should be a event hooked and parsed by KanColleWidget
    }
});