導入手順

LINEも使ってる!無料プッシュ通知サービス OneSignal導入手順 【iOS編】

onesignal 見出し

LINEも使っている、無料のプッシュ通知サービス、OneSignalの導入方法を解説します!

今回はiOS編。

後ほど、Android編も。

前提条件

iOS Provisioning Portalで本番用のProvisioning Profileを事前に作成しておいてください。

 

会員登録

まず、OneSignalの会員登録しましょう。
話はそれからだっ。
https://onesignal.com

「GET STARTED」をクリック
GET STARTED

お好きな方法で。
会員登録方法の選択

「Using Google」だと2、3クリックだけで、一切の入力無しで会員登録が終わる所は、サスガ。
これは、ぜひ見習わなきゃいけない。

 

APNs(Apple PushNotifications)証明書の登録

会員登録が終わると、画面はもうプッシュ通知登録。
ここもサスガ。

まずは、プッシュ通知の証明書を作成して、OneSignalにアップロードする手順を説明します。

「Add a new app」をクリック
Add new app

適当にアプリ名を入力
アプリ名の入力

プラットフォームを選択
プラットフォームの選択

ちょっと面倒くさそうな画面が出てくる。
「ドキュメントを読んで下の項目をどうするのか学べ」とあるのでドキュメントのリンク「Read the documentation」をクリック。
プッシュ通知証明書のアップロード画面

新しく開いたリンク先のページを少し下にスクロールして
「OneSignal’s Provisionator Tool」をクリック
手順ドキュメント

これでプッシュ通知証明書の作成ツール画面にきます。
「Get Started」をクリック。
OneSignal's Provisionator

iTunes ConnectのIDとパスワードを入力。
大丈夫。怖く無いよ。
iTunes connectにログイン

ログインできたら
Step2 チーム
Step3 本番用のProvisioning Profile
を選択して「Generate」をクリック。
Provisioning Profileの選択

これだけでプッシュ通知の証明書が簡単に作成できちゃう。

一般的なやり方だとiTunes Connect行ったり、キーチェンアクセスで証明書発行したり、ターミナルでいじいじしたり大変なのに。。

徹底的に簡単にしているサービス精神に感動。
プッシュ通知証明書の作成完了

この作業をすると、本番用のProvisioning ProfileのStatusがInvalideになるので、iOS Provisioning Protalで
Edit > Generate > Done
でActiveにしておくのも忘れずに。

大きくAll done!と書いてあるすぐ下「Download p12 file」ボタンをクリックしてAPNs(Apple PushNotifications)証明書をダウンロード。
一緒に書いてあるPasswordもメモっておくこと。

前に面倒くさそうなドキュメントリンクを押したページに戻る。
「Choose File…」をクリック。
p12ファイルのアップロード

p12ファイルをアップロードすると、Password入力欄が出てくるのでそこに、先ほどメモったパスワードも入れて「Save」をクリック。
パスワード入力とSave

 

プラットフォームの選択

次にプラットーフォームの選択画面になるので、開発環境にあわせて、プラットフォームを選択して「NEXT」をクリック。
プラットフォーム選択環境は以下の10種類と盛りだくさん。
ここでは「Native iOS」を選択しました。

  • Native iOS
  • Corona
  • Unity
  • Marmalade
  • Adobe Air
  • Phoegap
  • Cocos2d-x
  • Xamarin
  • React Native
  • Server API

 

Notification Service Extensionのセットアップ

ドキュメントを読んで、CocoaPodsを使ってSDKを入れろ、とあるので
「Read the documentation」リンクをクリック。

ここにある「Your App ID」は最後に、AppDelegate.swiftに追加するOneSignalライブラリの初期化処理に使うのでメモって置くこと。
SDKのインストール

リンク先のドキュメント「Notification Service Extension」を追加しろ、とあるので追加していきます。

Notification Service Extensionとは、iOS10から導入されたExtensionで、プッシュ通知を受け取って表示する前に、処理を挟むことができるようになります。
たとえば通知を暗号で送って、端末側で複合するとか。

プッシュ通知を追加したいプロジェクトをXCodeで開いて
File > New > Target…
で開くTarget一覧から
「Notification Service Extension」
を選んで「Next」をクリック。

アイコンが似ている「Notification Content Extension」を選ばないように。
(ハマった。。)

targetの選択Product Nameに
OneSignalNotificationServiceExtension
と入力したら「Finish」をクリック。

他の場所でもこの名前は使うので独自の名前にしないでこのままコピペが吉です。
ProductNameの入力

すかさず、ExtensionをActivateするかの確認アラートがでるので
「Cancel」
をクリック。Cancelね。
ExtensionのActivate確認アラート

Notification Service ExtensionはiOS10以上からなので、「OneSignalNotificationServiceExtension」「Deployment Target」10.0以上にすること。
targetの設定

そして、自動で生成されている
[ProjectRoot]/OneSignalNotificationServiceExtension/NotificationService.swift
ファイルの内容を以下の内容に置き換えます。

この時「OneSignal」ライブラリをまだ入れていないのでエラーが出るが、気にしないこと。

 

CocoaPodsでOneSignalライブラリを追加する

次にOneSignalライブラリーをCocoaPodsで追加します。

CocoaPods自体のインストール方法は割愛。

次の項目をPodfileに追加します。

追加できたら、ターミナルでコマンド実行

僕の環境では、pod installでエラーが出たので「use_frameworks!」を追加。
同じようにエラーが出た人は追加をば。

僕の環境では、ここでコンパイルをしてみたら他のライブラリーが読めないというエラーが。

OneSignalNotificationServiceExtension ターゲットの
Build Settings > Swift Compiler – General > Objective-C Bridge Header
に、勝手に追加された、既存のBridge Headerへのパスが悪さをしていたので、消して、設定を空にしたら直りました。

 

Push通知の有効化 (Capabilities)

次にプロジェクト設定から、プッシュ通知を有効にします。

Cocoapodsのinstallを実行した後はワークスペースファイル(.xcworkspace)ができるので、そちらを開いて続きの作業を進めます。

プロジェクトの「Capabilities」を開いて

  • Push Notifications
  • Background Modes

ON

Background Modes「Remote notifications」にチェックを入れるのも忘れずに。
Capabilitesのセット

 

AppDelegateにOneSignalの初期化コード追加

最後に、OneSignalライブラリの初期化処理を追加します。

AppDelegate.swiftを開いてdidFinishLaunchingWithOptionsに次のコードを追加。
「YOUR_APP_ID」には「Notification Service Extensionのセットアップ」の項でメモって置いたIDを入れる。

 

開通確認

以上が完了したら、SDKインストールのガイドに飛ぶ前に開いていたダイアログにある
「Check Subscribed Users」ボタンをクリックして開通チェックをします。

この時、必ずアプリを実機に入れてテストしてください。
シミュレータでは確認できません。
プッシュ通知テスト

ちゃんと設定が一通りできているとCongratulation表示がされます。
「Done」を押して設定を完了。
Push通知の開通テスト
お疲れ様でした〜😉