web-dev-qa-db-ja.com

Webアプリケーションはどのようにプッシュ通知をiOSデバイスに送信できますか?

私はWebアプリに取り組んでいます。新しいコンテンツがある場合、iOSユーザーにプッシュ通知を送信するにはどうすればよいですか?

114
Frankie

具体的には、WebアプリケーションがiPhoneなどのモバイルデバイスにプッシュ通知を送信するには、モバイルデバイスが特定のアプリケーションのプッシュ通知を受信するように登録されている必要があります。プッシュ通知の登録は、ネイティブアプリを介して行われ、ネイティブアプリを介してのみ実行できます。ネイティブアプリがプッシュ通知用に登録されると、ネイティブクライアントのプロビジョニングに使用される証明書と一緒に使用できる認証トークンをサーバーに送信して、プッシュ通知をモバイルデバイスに送信できます。

別の回答で指定されているように、1つのオプションは、Webアプリケーションをネイティブアプリケーションに「ラップ」することです。つまり、Webアプリケーションを表示しているユーザーに基本的にUIWebView(iPhone開発用)を表示するネイティブアプリケーションを作成するということです。これはネイティブブラウザとほぼ同じように機能しますが、ネイティブコントロールを使用してプッシュ通知に登録する機能を追加できます。

Appleのプッシュ通知ドキュメントを確認すると、iPhoneでのプッシュメッセージングの機能に関する非常に優れた情報が提供されるため、有益です。

Peter Hoseyが提供するこれらのリンクを参照してください。

89
Kris Babic

いいえ、ネイティブiOSアプリケーションのみがプッシュ通知をサポートしています。

UPDATE:
Mac OS X 10.9およびSafari 7 Webサイトもプッシュ通知を送信できるようになりましたが、これはiOSにはまだ適用されません。 Webサイトの通知プログラミングガイド を読んでください。 WWDC 2013セッション614 もご覧ください。

44
Felix

iOSではまだサポートされていませんが(iOS 10以降)、WebサイトはFirefoxおよびChrome(デスクトップ/ Androidにプッシュ通知を送信できます) Push API を使用します。

Push APIは、メッセージを表示するために、古い Web Notifications と組み合わせて使用​​されます。利点は、ユーザーがWebサイトを閲覧していないときでもプッシュAPIが通知を配信できることです。これは、サービスワーカー(ブラウザによって登録され、後でもバックグラウンドで実行できるスクリプト)に基づいているためですユーザーがウェブサイトを離れました)。

通知を送信するプロセスには、次のものが含まれます。

  1. ユーザーがWebサイトにアクセスします(HTTPSで保護する必要があります):プッシュ通知を表示する許可を求め、サービスワーカー(プッシュ通知を受信したときに実行されるスクリプト)を登録します
  2. ユーザーがアクセス許可を付与した場合、サーバーに送信して保存する必要があるデバイストークン(エンドポイント)を読み取ることができます
  3. ユーザーに通知を送信できるようになりました。サーバーはエンドポイント(デバイストークンを含むURL)に対してHTTP POSTリクエストを作成します。リクエストを受信するサーバーの所有者はブラウザーの製造元(Google、Mozillaなど)です。ブラウザーは常時接続されており、着信通​​知を読み取ることができます。
  4. ユーザーのブラウザが通知を受信すると、イベントを管理し、サーバーから通知データを取得してユーザーに通知を表示するサービスワーカーを実行します。

Push APIは現在、desktopおよびAndroidChromeFirefoxおよびOpera

APNを使用して、プッシュ通知をApple /Safariデスクトップに送信することもできます。アプローチは似ていますが、多くの複雑な問題があります(Apple開発者証明書、プッシュパッケージ、APNへの低レベルTCP接続)。

自分でプッシュ通知を実装する場合は、次のチュートリアルから始めてください。

あなたがソリューションのドロップを探しているなら、私は提案します Pushpad 、これは私が構築したサービスです。

Update(2017年9月):AppleはWebKitのサービスワーカーの開発を開始しました( status )。サービスワーカーはWeb Pushの基本技術であるため、これは大きな前進です。

39
collimarco

Google Chromeは、プッシュ通知用のW3C標準をサポートするようになりました。

http://www.w3.org/TR/Push-api/

10

実際に..これはまったく新しいことです。OS X(Mavericks)の最新バージョンでは、 CAN Webページからデスクトップにプッシュ通知を送信します。しかし、ドキュメントによると、iPhoneではありません。

Note: This document pertains to OS X only. Notifications for websites do not appear on iOS.

現在、Appleでは、OS X Webサイトのプッシュ通知とローカル通知の2種類のプッシュ通知を許可する計画があります。

ここでの明らかなハードルは、これはPCでは機能しないことであり、Androidプッシュ通知を行うこともできません。

さらに、実際には、Snow Leapordと同じくらい古いバージョンで、Webサイトが開いていてアクティブである限り、Webサイトからプッシュ通知を送信できます。新しいMavericks OSでは、サイトが開かれていない場合でも、プッシュ通知を送信するためのサイトへのアクセス許可が既に与えられている場合、プッシュ通知が許可されます。

アップルの口から:

OS X v10.9以降では、Appleプッシュ通知サービス(APN)を使用して、OS X Webサイトプッシュ通知をWebサーバーからOS Xユーザーに直接ディスパッチできます。ローカル通知と混同しないように、プッシュ通知は、WebサイトまたはWebブラウザーが開いているかどうかに関係なくユーザーに到達できます…

プッシュ通知をWebサイトに統合するには、まず、ユーザーが通知の受信を選択できるようにするインターフェイスを提示します。ユーザーが同意すると、SafariはWebサイトにアクセスし、プッシュパッケージと呼ばれるファイルの形式で資格情報を要求します。 Pushパッケージには、OS X全体で使用される通知アセットと、設定するWebサービスとの通信に使用されるデータも含まれます。プッシュパッケージが有効な場合、デバイストークンと呼ばれるデバイス上のユーザーの一意の識別子を受け取ります。このデバイストークンとメッセージまたはペイロードの組み合わせをAPNに送信すると、ユーザーは通知を受け取ります。

通知を受け取ったユーザーは、その通知をクリックして、ユーザーのデフォルトブラウザーで選択したWebページを開くことができます。

注:APNの復習が必要な場合は、ローカルおよびプッシュ通知プログラミングガイドの「Appleプッシュ通知サービス」の章をお読みください。このドキュメントはiOSおよびOS Xプッシュ通知に固有のものですが、プッシュ通知サービスのパラダイムは引き続き適用されます。

9
Jonathan Nemeth

独自のネイティブアプリを作成したくない場合は、プッシュオーバーを使用できます。 https://pushover.net/

8
Sam

いいえ、Webアプリがプッシュ通知を受信する方法はありません。できることは、Webアプリをプッシュ通知を持つネイティブアプリにラップすることです。

7
JustSid

W3Cは2010年に通知を実装するためのワーキンググループを開始しました。
http://www.w3.org/2010/web-notifications/

このワーキンググループは、これらのメカニズムをWebアプリケーションに公開するAPIを開発します。たとえば、Webベースの電子メールクライアントやインスタントメッセージングクライアントを作成するWeb開発者は、Webアプリケーションの動作をオペレーティングシステムの通知機能とより密接に統合できますエンドユーザーの。

最後に、特定のWebサイトが開いている場合にのみ機能するため、結果は悪い冗談のようになります。 http://alxgbsn.co.uk/notify.js/

私は彼らがプッシュURLを追加する可能性を実装するのを逃したので、ブラウザがバックグラウンドで実行中に通知を要求できるようになったと思います。

2
mgutt

HTML5 Websocketを使用して、独自のプッシュメッセージを導入できます。から ウィキペディア

「クライアント側では、WebSocketはFirefox 4、Google Chrome 4、Opera 11、Safari 5、およびiOS 4.2のモバイルバージョンのSafariに実装されました。また、OS7のBlackBerry BrowserはWebSocketをサポートしています。」

これを行うには、クライアントにメッセージをプッシュする独自のプロバイダーサーバーが必要です。
APN(Apple Push Notification)またはC2DM(Cloud to Device Message)を使用する場合は、オンラインストアからダウンロードする必要があるネイティブアプリケーションが必要です。

2
Foyzul Karim

Pushbullet はこれに代わる優れた選択肢です。

ただし、ユーザーは、Pushbulletアカウントとアプリ(iOS、Android)またはプラグイン(Chrome、Opera、Firefox、Windows)をインストールする必要があります。

Pushbulletアプリを作成して API を使用し、oAuth2を使用してアプリケーションのユーザーをPushbulletユーザーに接続できます。

ライブラリを使用すると、PHPの方がはるかに簡単になります ivkos/Pushbullet-for-PHP をお勧めします。

2
Tim

Xtify Web Push通知をご覧ください。 http://getreactor.xtify.com/ このツールを使用すると、コンテンツをWebページにプッシュし、訪問者をターゲットにし、ブラウザのDOMイベントに基づいてメッセージをトリガーできます。特にモバイルを念頭に置いて設計されています。

1
Jeremy