iOSクイックスタート

本クイックスタートではNotifyとTwilio NotifyサンプルiOS Appを使用してプッシュ通知を送信する方法をご紹介します。

注意
このガイドを完了するには、Appleの開発者アカウントを所持していて、ご自身のマシンでXcodeを実行すること、および、構成済のiOSプッシュ通知が必要です。

コンソールでは、Notifyサービスを作成します。 SIDを書き留めておいてください! 後ほどコードを記述する際に使用します。

Notify SMSクイックスタート - Notifyサービスインスタンスのセットアップ

アカウント情報の収集


Twilioアカウントから必要な情報をすべて取得することが必要です。 以下が必要になります

設定値 概要
サービスインスタンスSID アプリケーションのすべてのデータが保存されスコープ範囲にあるServiceインスタンスです。 Console上で作成できます。
Account SID REST API リクエストの認証に使用します。コンソールのここで確認します
API Key REST API リクエストの認証に使用します。Account SID と同様、コンソールのここで確認します
API Secret REST API リクエストの認証に使用します。Account SID と同様、コンソールのここで確認します

また、Twilioでプッシュクレデンシャルを作成し、Notifyサービスでそれを構成することも必要です。 こちらでクレデンシャルをアップロードできます。 まだお持ちでない場合は、このガイドに従って作成してください。

サーバーアプリケーションの設定


Notifyサービスの使用時、通知を受信するためデバイスを登録し、これらのデバイスに通知を送信できるようにすることが必要です。 手っ取り早く済ませられるよう、これらのタスクを完了するためのサーバーを下記の言語でご用意しています:

サンプルモバイルAppはサーバー側アプリケーションと通信を行い、通知のためにデバイスを登録します。 これについては次の段落でさらに掘り下げます。

この例ではNode.jsのサーバーを使用しますが、お好みの言語をお選びいただけます。

続いて必要になるもの:
  • Step 1: Node.jsのインストール(もしまだ行っていない場合)
  • Step 2: Node.jsサーバーアプリケーションのダウンロードと展開
  • Step 3: コンピューター上でのサーバーアプリケーションの構成と実行

Step 1: Node.jsのインストール

こちらでNode.jsを入手し、インストールを完了します。

Step 3: コンピューター上でのサーバーアプリケーションの構成と実行

これで、Node.jsがインストールされ、Node.jsサーバーがダウンロード、展開できたので、ここでご自身のアカウント情報でサーバーの構成を行います。 .env.exampleフィアルを.envにコピーします。 続いて、.envファイルを編集して、上記で収集した3つの構成パラメーター(アカウントSID、認証トークン、Notify Service Instance SID)を追加することが必要です。 Macのターミナルウィンドウや他のテキストエディターからも行えます。

コードサンプルを読み込んでいます...
Language
{
  "type": "server",
  "description": "Sample configuration files for Notufy",
  "title": "Notify Environment Configuration"
}
# Required for all uses
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxx
TWILIO_API_KEY=SKxxxxxxxxxxxxxxxxxxxx
TWILIO_API_SECRET=xxxxxxxxxxxxxxxxxxxxx

# Required for Video
TWILIO_CONFIGURATION_SID=

# Required for Chat
TWILIO_CHAT_SERVICE_SID=

# Required for Notify
TWILIO_NOTIFICATION_SERVICE_SID=ISxxxxxxxxxxxxxxxxxxxxxxx

# Required for Sync
TWILIO_SYNC_SERVICE_SID=
# Required for all uses
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxx
TWILIO_API_KEY=SKxxxxxxxxxxxxxxxxxxxx
TWILIO_API_SECRET=xxxxxxxxxxxxxxxxxxxxx

# Required for Video
TWILIO_CONFIGURATION_SID=

# Required for Chat
TWILIO_CHAT_SERVICE_SID=

# Required for Notify
TWILIO_NOTIFICATION_SERVICE_SID=ISxxxxxxxxxxxxxxxxxxxxxxx

# Required for Sync
TWILIO_SYNC_SERVICE_SID=
Notify用のサンプル構成ファイル
Notifyの環境設定

Notify用のサンプル構成ファイル

これで、依存関係をインストール。 ターミナルウィンドウでアプリケーションを解凍したフォルダーに移動して下記を実行します:

npm install

設定が完了したら、サーバーを起動する準備は完了です - 再度ターミナルで下記を実行します:

npm start

サーバーが実行中であることを確認するには、Webブラウザーからhttp://localhost:3000にアクセスします。 下記のホーム画面のように表示されます:

Twilio SDKスターターホーム画面

サーバーのセットアップが完了したので、Twilio NotifyサンプルiOS Appを実行してみましょう。

 

Twilio NotifyサンプルiOS Appのセットアップ


続いて必要になるもの:
  • Step 1: Twilio NotifyサンプルiOS Appを入手する
  • Step 2: まだ行っていない場合、iOSプッシュ通知を構成する
  • Step 3: Node.jsサーバーアプリケーションを実行し、公開サーバーURLを外部からアクセスできるようにする
  • Step 4: デバイス上でTwilio NotifyサンプルiOS Appを実行し、公開サーバーURLを指し示すようにする。

Step 1: Twilio NotifyサンプルiOS Appを入手する

Objective-CおよびSwiftですばやく使い始められるよう、サンプルアプリケーションを提供しています。

ご希望のバージョンをダウンロード、解凍し、XCode上で開きます:

これらのアプリケーションはGitHub上で利用可能です(Objective-CSwift)。

Step 2: iOSプッシュ通知を構成する

まだ行なっていない場合は、このガイドにしたがってiOSプッシュ通知を構成します。

続いて、通知のプロジェクトの構成を開きます。 Generalタブで、Bundle IdentifierをiOSプッシュ通知の構成時に生成、認証を取得したものに一致するよう設定します。

Notify iOS Quickstart - サンプルモバイルApp bundle identifier

Step 3: Node.jsサーバーアプリケーションを実行し、公開サーバーURLを外部からアクセスできるようにする

注意
プッシュ通知はiOSシミュレーター上では動作しないため、プッシュ通知を送信できるようにするには、デバイス上でTwilio NotifyサンプルiOS Appを実行することが必要です。

この例では、ローカルのサーバーを公開し、モバイルAppと通信できるようにするため、ngrokを使用します。

ngrokをダウンロードします。ターミナルウィンドウでngrokのフォルダーに移動し、実行します。

./ngrok http 3000

そうすると、下記のような表示がご覧いただけるでしょう。

Session Status                online                                                                                                            
Version                       2.1.18                                                                                                            
Region                        United States (us)                                                                                                
Web Interface                 http://127.0.0.1:4040                                                                                             
Forwarding                    http://a9534ff6.ngrok.io -> localhost:3000                                                                        
Forwarding                    https://a9534ff6.ngrok.io -> localhost:3000                                                                       

Connections                   ttl     opn     rt1     rt5     p50     p90                                                                       
                              2       0       0.00    0.00    61.71   120.52                                                                                                                                                                           

Step 4: デバイス上でモバイルAppを実行し、公開サーバーURLを指すようにします。

デバイス上で実行されているモバイルAppをNode.jsサーバーとやりとりできるようにするため、ViewControllerファイルの先頭のURLをngrokでローカルのNode.jsサーバーに転送された公開URLに置き換えます(ここではhttp://a9534ff6.ngrok.ioです)。 詳細については、ngrokの「入門」ガイドを参照してください。

Notify iOSクイックスタート - 公開URLを指すサンプルモバイルApp

それでは、ご自身のデバイス上でAppをビルドしましょう。 Appの起動時、ユーザーのアイデンティティーを入力でいる簡単なUIがご覧いただけるはずです。

続いてユーザーのアイデンティティーとこのデバイスとのバインディングを作成します。

iOSプッシュ通知 (APNS) 用のバインディングの作成


つづいて、ユーザーのアイデンティティとAppの実行されているデバイスとの間にバインディングを作成する必要があります。 ユーザーのアイデンティティーはGUIDのような任意の一意な識別子を選べます。

App内では選択したアイデティティーを入力し、Registerボタンをクリックします。

Notify iOS クイックスタート - バインディングを作成するサンプルモバイルApp

 

このアクションは、アプリケーションで実行されている特定のデバイス上のユーザーを一意に識別するバインディングを作成します。

Node.jsサーバーの実行されているターミナルウィンドウでは、このように表示されます

BindingInstance {
  _version: 
   V1 {
     _domain: 
      Notify {
        twilio: [Object],
        baseUrl: 'https://notify.twilio.com',
        _v1: [Circular] },
     _version: 'v1',
     _credentials: undefined,
     _services: 
      { [Function: ServiceListInstance]
        _version: [Circular],
        _solution: {},
        _uri: '/Services',
        create: [Function: create],
        each: [Function: each],
        list: [Function: list],
        page: [Function: page],
        get: [Function: get] } },
  sid: 'BSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  accountSid: 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,
  serviceSid: 'ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,
  dateCreated: 2017-01-17T13:07:39.000Z,
  dateUpdated: 2017-01-17T13:07:39.000Z,
  notificationProtocolVersion: '3',
  endpoint: 'user999999999XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  identity: 'user999999999',
  bindingType: 'apn',
  address: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  tags: [],
  url: 'https://notify.twilio.com/v1/Services/ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Bindings/BSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
  _context: undefined,
  _solution: 
   { serviceSid: 'ISXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
     sid: 'BSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' } }

デバッガーモードでサンプルAppを実行していてそれが失敗する場合、コンソールにエラーメッセージが表示されます。

アイデンティティーに個人を識別できる情報を使用しないでください
Notifyはアイデンティティーをユーザーの一意な識別子として使用します。 この属性を処理するシステムは直接的な識別情報ではないことを前提としているため、識別情報(個人の名前、自宅住所、メールアドレス、電話番号などの個人識別情報、またはPII (=Personally Identifiable Information) をアイデンティティーとして直接使用しないでください。

バインディングが用意できたので、Notifyを使用して最初のプッシュ通知を送信する準備は完了です。

Twilio NotifyサンプルAppの実行されているデバイスにプッシュ通知を送信する


通知を送信するには、ダウンロード済みのサーバースターターキットのNotifyページを使用できます。 このまま進めて、ホームページ下部の「通知」ボタンをクリックし、Notifyページに移動します。

このページ上で、このAppで使用しているアイデンティティーにメッセージを送信します。 TwilioでBindingを登録済みであるため、サーバーはお使いのデバイスに「Hello World!」メッセージを通知として送信します。

できましたね!ここからはあなたがご自身のアプリを作る番です。

関連トピック


Notifyで可能なことはさらにたくさんあります。 通知の送信に、他のクイックスタートもお試しください。

またはハウツー記事もご覧ください:

Notify APIの詳細情報については、REST APIドキュメントを参照してください。

ヘルプが必要ですか?

誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。

コードサンプルを読み込んでいます...
{
  "type": "server",
  "description": "Sample configuration files for Notufy",
  "title": "Notify Environment Configuration"
}
# Required for all uses
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxx
TWILIO_API_KEY=SKxxxxxxxxxxxxxxxxxxxx
TWILIO_API_SECRET=xxxxxxxxxxxxxxxxxxxxx

# Required for Video
TWILIO_CONFIGURATION_SID=

# Required for Chat
TWILIO_CHAT_SERVICE_SID=

# Required for Notify
TWILIO_NOTIFICATION_SERVICE_SID=ISxxxxxxxxxxxxxxxxxxxxxxx

# Required for Sync
TWILIO_SYNC_SERVICE_SID=
# Required for all uses
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxx
TWILIO_API_KEY=SKxxxxxxxxxxxxxxxxxxxx
TWILIO_API_SECRET=xxxxxxxxxxxxxxxxxxxxx

# Required for Video
TWILIO_CONFIGURATION_SID=

# Required for Chat
TWILIO_CHAT_SERVICE_SID=

# Required for Notify
TWILIO_NOTIFICATION_SERVICE_SID=ISxxxxxxxxxxxxxxxxxxxxxxx

# Required for Sync
TWILIO_SYNC_SERVICE_SID=