aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/pushsubscription/getkey/index.html
blob: 233bcc4446a7afb9c46590304cee8c3b25b57038 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
---
title: PushSubscription.getKey()
slug: Web/API/PushSubscription/getKey
tags:
  - API
  - Experimental
  - Method
  - Non-standard
  - Push
  - Push API
  - PushSubscription
  - Reference
  - Service Workers
  - getKey
translation_of: Web/API/PushSubscription/getKey
---
<p>{{SeeCompatTable}}{{APIRef("Push API")}}</p>

<p>{{domxref("PushSubscription")}} インターフェースの <code>getKey()</code> メソッドは、サーバに送信されてプッシュメッセージデータを暗号化するために使用される、クライアントパブリックキーを表す {{domxref("ArrayBuffer")}} を返します。</p>

<div class="note">
<p><strong>ノート</strong>: 現在、Firefox のみの実装であり、まだ Push API 仕様には含まれていません。</p>
</div>

<h2 id="構文">構文</h2>

<pre class="syntaxbox"><span class="pl-k">var</span> key <span class="pl-k">=</span> subscription.getKey(<span class="pl-s"><span class="pl-pds">method</span></span>);</pre>

<h3 id="パラメーター">パラメーター</h3>

<dl>
 <dt>method</dt>
 <dd>クライアントパブリックキーの生成に使用される暗号化メソッドです。現在、<code>p256dh</code>のみがオプションです。メソッドには次の値がが選べます:
 <ul>
  <li><code>p256dh</code>: P-256 曲線の <a href="https://ja.wikipedia.org/wiki/%E6%A5%95%E5%86%86%E6%9B%B2%E7%B7%9A%E3%83%87%E3%82%A3%E3%83%95%E3%82%A3%E3%83%BC%E3%83%BB%E3%83%98%E3%83%AB%E3%83%9E%E3%83%B3%E9%8D%B5%E5%85%B1%E6%9C%89">楕円曲線ディフィー・ヘルマン鍵共有</a>(つまり、NIST secp256r1 楕円曲線)。結果としてられるキーは、ANSI X9.62 フォーマットで非圧縮ポイントとなります。</li>
 </ul>
 </dd>
</dl>

<h3 id="戻り値">戻り値</h3>

<p>{{domxref("ArrayBuffer")}}</p>

<h2 id="例"></h2>

<p><a href="https://github.com/chrisdavidmills/push-api-demo/blob/gh-pages/main.js#L51-L116">Push API デモ</a>では、プッシュメッセージデータの暗号化と<a href="https://github.com/chrisdavidmills/push-api-demo/blob/gh-pages/server.js">サーバ</a>から特定のサブスクライバにプッシュメッセージを送信するために必要な認証を得るために、getKey('p256dh') と {{domxref("PushSubscription.endpoint")}} を呼び出しています。</p>

<pre>reg.pushManager.getSubscription()
  .then(function(subscription) {
  // プッシュメッセージからサブスクライブ / アンサブスクライブ
  // する任意の UI を有効にする

  subBtn.disabled = false;

  if (!subscription) {
    console.log('Not yet subscribed to Push')
    // プッシュを購読していない場合、ユーザーがプッシュできるように
    // UI を設定する。
    return;
  }

  // プッシュメッセージを購読していることを表示するように
  // UI を設定する。
  subBtn.textContent = 'Unsubscribe from Push Messaging';
  isPushEnabled = true;

  // 購読ステータスのための UI 要素の設定を含んで状態を初期化し、
  // プッシュ経由でサブスクライバーを更新する。
  var endpoint = subscription.endpoint;
  var key = subscription.getKey('p256dh');

    ...</pre>

<h2 id="仕様">仕様</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">仕様</th>
   <th scope="col">状態</th>
   <th scope="col">コメント</th>
  </tr>
  <tr>
   <td>{{SpecName('Push API')}}</td>
   <td>{{Spec2('Push API')}}</td>
   <td>これは Push API 仕様ですが、<code>getKey()</code> はここに含まれていないことに注意してください。現在は、Firefox だけの実験実装です。</td>
  </tr>
 </tbody>
</table>

<h2 id="ブラウザ実装状況">ブラウザ実装状況</h2>

<div>{{CompatibilityTable}}</div>

<div id="compat-desktop">
<table class="compat-table">
 <tbody>
  <tr>
   <th>機能</th>
   <th>Chrome</th>
   <th>Firefox (Gecko)</th>
   <th>Internet Explorer</th>
   <th>Opera</th>
   <th>Safari (WebKit)</th>
  </tr>
  <tr>
   <td>基本サポート</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatGeckoDesktop(44.0)}}<sup>[1]</sup></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<div id="compat-mobile">
<table class="compat-table">
 <tbody>
  <tr>
   <th>機能</th>
   <th>Android</th>
   <th>Android Webview</th>
   <th>Firefox Mobile (Gecko)</th>
   <th>Firefox OS</th>
   <th>IE Mobile</th>
   <th>Opera Mobile</th>
   <th>Safari Mobile</th>
   <th>Chrome for Android</th>
  </tr>
  <tr>
   <td>基本サポート</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatGeckoMobile(48)}}<sup>[2]</sup></td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
   <td>{{CompatNo}}</td>
  </tr>
 </tbody>
</table>
</div>

<ul>
 <li>[1] Push(と <a href="/ja/docs/Web/API/Service_Worker_API">Service Workers</a>) は、<a href="https://www.mozilla.org/ja/firefox/organizations/">Firefox 45 延長サポート版</a>(ESR)では使用できません。</li>
 <li>[2] Firefox for Android 48 から、既定で Push を使用できます。</li>
</ul>

<h2 id="関連項目">関連項目</h2>

<ul>
 <li><a href="/ja/docs/Web/API/Push_API/Using_the_Push_API">Using the Push API</a></li>
</ul>