Fello

プッシュ通知機能SDK組み込み手順書(iOS)

SDKの概要

本SDKを使用することで、iOSアプリケーションに以下のプッシュ通知機能を組み込むことができます。
また、広告の配信機能も同一のSDKに含まれているため利用可能です。
詳細は広告ネットワーク機能の利用手順を参照ください。

  • プッシュ通知の予約配信(※リモート、ローカル)

  • プッシュ通知の効果測定

  • プッシュ通知経由の起動時にゲーム側でカスタム動作(インセンティブの付与など)

  • ※多くのユーザーに一斉配信する(例:イベント開始の告知をする)にはリモートプッシュ通知を、個別ユーザーのアクションに連動して個別配信する(例:体力が全回復したことを通知する)にはローカルプッシュ通知を利用します。

組み込みに必要なもの

アプリケーションの登録

まず以下の手順でアプリケーションを登録してください。
登録完了後、あなたのアプリケーション用のアプリケーションIDが発行されます。

  1. デベロッパーセンターにログインする


  2. "アプリケーション追加"ボタンを押し、アプリケーション名など必要な情報を登録する


  3. "アプリケーション一覧"から、登録したアプリケーションの情報を確認する


最新のSDK

SDKのダウンロードから、iOS向けのSDKをダウンロードしてください。

開発環境・ソフトウェア

iOSアプリケーションに本SDKを組み込むには、以下のソフトウェアが必要です。

動作環境

本SDKの組み込みに対応しているOSバージョンは以下の通りです。

iOS 6.0 以上

サンプルアプリの動作確認

本SDKは、iOSフレームワーク/リソースバンドルとして提供されています。

以下の手順で、サンプルプロジェクトをビルドします。

サンプルプロジェクトのコードを変更

アプリケーションIDの修正

  • 以下のパスはXCodeのプロジェクトナビゲータ上のものです。

  • push_sample/src/AppDelegate.mの、appIdを設定します。

    #import "AppDelegate.h"
    #import "ViewController.h"
    #import <FelloPush/KonectNotificationsAPI.h>
    
    static NSString* appId = @"(アプリケーションID)";
    
    @implementation AppDelegate
    
  • appIdは、アプリケーション登録時に発行されたアプリケーションIDを設定してください。

  • (※iOS9以上の場合) Bitcodeを有効に設定する場合は、Build Settings > Build Options > Enable BitcodeにNOを指定して下さい。

  • (※iOS9以上の場合) ATSを無効にする場合は、アプリ内のInfo.plistを編集し、NSAppTransportSecurityという名前のDictionaryを追加し、キーNSAllowsArbitraryLoads、値YESを設定して下さい。

サンプルプロジェクトを起動

  1. iOS端末をMacに接続する

    USBケーブルで端末をMacに接続しておいてください。

  2. プロジェクトをcleanする

    XCodeのメニュー内の、Product > Cleanを選択します。

  3. アプリを起動する

    XCodeのツールバー内のSchemeから、push_sample>(Macに接続したiOS端末)を選択し、Runボタンを押します。
    アプリのビルド中にDsymutil Warningが発生することがありますがこれは無視してください。

プッシュ通知の配信予約(リモート)

端末にリモートプッシュ通知を配信する方法を説明します。
以下の手順で、リモートプッシュ通知の配信設定ができます。

  1. デベロッパーサイトにログインし、ダッシュボードを開く


  2. メニューの"アプリケーション一覧"から登録したアプリケーションを選択

    アプリケーション管理画面へ移動します。


  3. ページ上部タブの"プッシュ通知"から、プッシュ通知スケジュール管理ページに移動

    初期状態では配信スケジュールが表示されています。


  4. "追加"から必要な情報を設定し追加ボタンを押す

    送信予定日時・メッセージを入力してください。 それぞれの項目の詳細は以下の通りです。

    • 送信日付
      プッシュ通知を配信する予定日時

    • メッセージ
      プッシュ通知で表示されるメッセージ

    • Icon
      プッシュ通知受信時に表示されるポップアップのアイコンを登録できます(Android端末のみ)
      iOSの通知には、画像の登録に関わらずアプリアイコンが表示されます。
      アイコンサイズは112×112ピクセルで、png/jpg形式に対応しています(png推奨)

    • サウンド
      プッシュ通知時にサウンドを再生する(iOS端末のみ)

    • バッジ
      プッシュ通知時、アイコンにバッジ表示する(iOS端末のみ)

    • 未起動日数 プッシュ通知配信日時から、設定した日数以上未起動であるユーザーが配信対象になります。


  5. "スケジュール一覧"で、配信予定が登録されていることを確認

    配信予定が登録されているか、一覧で確認することが出来ます。

プッシュ通知の配信予約(ローカル)

端末にローカルプッシュ通知を配信する方法を説明します。
以下の手順で、ローカルプッシュ通知の配信設定ができます。

  1. 下記の例を参考に、[KonectNotificationsAPI scheduleLocalNotification:at:label:]を呼び出すコードを実装

    [KonectNotificationsAPI scheduleLocalNotification:@"体力が全回復したよ!冒険に出かけよう!"
                                          at:[NSDate dateWithTimeIntervalSinceNow:60.0f]
                                        label:@"hp_max"];
    
    • text : メッセージ プッシュ通知で表示されるメッセージ

    • at : 送信日付 ローカルプッシュ通知を配信する予定日時

    • label : 分類ラベル 通知を分類するための任意のラベル(30文字まで)

  2. アプリを起動し、設定した条件通りに通知が出ることを確認

既存プロジェクトへのSDKの組み込み(Objective-C版)

  • Xcodeにて、Project NavigatorにダウンロードしたSDK内のPushSDK/Debug/FelloPush.framework, FelloPush.bundleをドラッグ&ドロップで登録する

    Bitcodeを有効にする場合は、PushSDK下のbitcodeフォルダ内のファイルを登録する



  • Build SettingsのOther Linker Flagsに-framework FelloPushを追加する


  • Build SettingsのOther Linker Flagsに-ObjCを追加する


  • Build PhasesのLink Binary With Librariesにlibsqlite3.0.tbd,StoreKit.frameworkを追加する


  • プロジェクトのAppDelegate.hファイルを修正する

    // 以下のインポートを行う
    #import <FelloPush/IKonectNotificationsCallback.h>
    
    // IKonectNotificationsCallbackをDelegateに追加する
    @interface AppDelegate : UIResponder <UIApplicationDelegate, IKonectNotificationsCallback>
    

  • プロジェクトのAppDelegate.mファイルを修正する

    // 以下のインポートを行う
    #import <FelloPush/KonectNotificationsAPI.h>
    
  • application:didFinishLaunchingWithOptions:launchOptions:にコードを追加する

    // アプリケーションID
    NSString* appId = @"YOUR_APP_ID";
    [KonectNotificationsAPI initialize:self launchOptions:launchOptions appId:appId];
    

    YOUR_APP_IDの部分をアプリケーションIDに置き換える

  • application:didRegisterForRemoteNotificationsWithDeviceToken:, application:didReceiveRemoteNotification:の各Delegateメソッドを追加する

    // デバイストークンを受信した際の処理
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken
    {
    }
    
    // プッシュ通知を受信した際の処理
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    {
    }
    
  • application:didRegisterForRemoteNotificationsWithDeviceToken:にコードを追加する

    // 渡ってきたデバイストークンを渡す
    [KonectNotificationsAPI setupNotifications:devToken];
    
  • application:didReceiveRemoteNotification:にコードを追加する

    // 渡ってきたuserInfoを渡す
    [KonectNotificationsAPI processNotifications:userInfo];
    
  • onLaunchFromNotification:message:extra:メソッドを実装する

    // このメソッドで、プッシュ通知からの起動後の処理を行うことが出来る
    - (void)onLaunchFromNotification:(NSString *)notificationsId message:(NSString *)message extra:(NSDictionary *)extra
    {
        NSLog(@"ここでextraの中身にひもづいたインセンティブの付与などを行うことが出来ます");
    }
    
  • (※iOS9以上の場合) Bitcodeを有効に設定する場合は、Build Settings > Build Options > Enable BitcodeにNOを指定する

  • (※iOS9以上の場合) ATSを無効化する場合は、アプリ内のInfo.plistを編集し、NSAppTransportSecurityという名前のDictionaryを追加し、キーNSAllowsArbitraryLoads、値YESを設定する

既存プロジェクトへのSDKの組み込み(Swift版)

  • Xcodeにて、Project NavigatorにダウンロードしたSDK内のPushSDK/Debug/FelloPush.framework, FelloPush.bundleをドラッグ&ドロップで登録する

    Bitcodeを有効にする場合は、PushSDK下のbitcodeフォルダ内のファイルを登録する



  • Build SettingsのOther Linker Flagsに-framework FelloPushを追加する


  • Build SettingsのOther Linker Flagsに-ObjCを追加する

  • Build PhasesのLink Binary With Librariesにlibsqlite3.0.dylib,StoreKit.frameworkを追加する


  • 以下の内容でFello-Bridging-Header.hを作成し、Build SettingsのSwift Compiler - Code Generation > Objective-C Bridging Headerに指定する

    #import <FelloPush/KonectNotificationsAPI.h>
    #import <FelloPush/IKonectNotificationsCallback.h>
    



  • プロジェクトのAppDelegate.swiftファイルを修正する

    // IKonectNotificationsCallbackを追加する
    class AppDelegate: UIResponder, UIApplicationDelegate, IKonectNotificationsCallback {
    
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        KonectNotificationsAPI.initialize(self, launchOptions:launchOptions, appId:"YOUR_APP_ID")
        return true
    }
    

    YOUR_APP_IDの部分をアプリケーションIDに置き換える


  • 以下のメソッドを追加する

    
    // デバイストークンを受信した際の処理
    func application(aplication: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken devToken: NSData) {
        KonectNotificationsAPI.setupNotifications(devToken)
    }
    
    // リモート通知を受信した際の処理
    func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
        KonectNotificationsAPI.processNotifications(userInfo)
    }
    
    // ローカル通知を受信した際の処理
    func application(application: UIApplication, didReceiveLocalNotification notification: UILocalNotification) {
        KonectNotificationsAPI.processLocalNotifications(notification)
    }
    
  • 各種コールバックを追加する

    
    // SDKの初期化とプッシュ通知ユーザー登録が完了した際に呼び出されるコールバック
    func onReady() {
        println("SDKの初期化とプッシュ通知ユーザー登録が完了した時に呼び出されます")
    }
    
    // 通知を受信した際に呼ばれるコールバック
    func onNotification(notificationsId: String, message: String, extra: [NSObject : AnyOjbect]!, isRemoteNotification: Bool) {
        println("ここでプッシュ通知の情報を取得することができます")
    }
    
    // リモートプッシュ通知から起動した際に呼ばれるコールバック
    func onLaunchFromNotification(notificationsId: String, message: String, extra: [NSObject : AnyOjbect]!) {
        println("ここでextraの中身にひもづいたインセンティブの付与などを行うことが出来ます")
    }
    
  • (※iOS9以上の場合) Bitcodeを有効に設定する場合は、Build Settings > Build Options > Enable BitcodeにNOを指定する

  • (※iOS9以上の場合) ATSを無効にする場合は、アプリ内のInfo.plistを編集し、NSAppTransportSecurityという名前のDictionaryを追加し、キーNSAllowsArbitraryLoads、値YESを設定する


  • Objective-CのAPIをSwiftで使用する方法についてはこちらのドキュメントをご参照ください。

ユーザーと紐付いたタグ情報の登録方法

こちらの機能は有料プラン専用です。各料金プランについてはこちらをご確認ください。

下記のAPIを用いることで、ユーザーと紐付いたタグ情報を登録することができます。

タグ情報登録することで、任意のユーザーに絞ったプッシュ通知配信を行うことができます。

  • 任意のタイミングで、[KonectNotificationsAPI setTag:withStringValue:] APIまたは
    [KonectNotificationsAPI setTag:withIntValue:] API、[KonectNotificationsAPI setTag:withDateValue:] APIを呼び出す

    // 以下のインポートを行う
    #import <FelloPush/KonectNotificationsAPI.h>
    
    - (void)onGameStart:(id)sender
    {
      [KonectNotificationsAPI setTag:@"サイトで登録した任意のタグ名" withStringValue:@"任意の値"];
    }
    

    なお、以下のタグ名についてはシステムで予約されているため使用できません。

    app_build
    app_version
    device
    language
    locale
    os
    os_version
    timezone
    

    タグ登録APIの詳細についてはAPIリファレンスの項目をご参照ください。

お知らせ管理機能の使用方法

こちらの機能は有料プラン専用です。各料金プランについてはこちらをご確認ください。

お知らせ管理機能を利用することで、プッシュ通知を受信していないユーザーにもお知らせを配信することができます。
お知らせ管理機能は大きく2つのビュー(お知らせ一覧のビュー、お知らせ本文のビュー)で構成されており、
サンプルアプリに含まれるソースコード、xibを修正することでUIの変更をすることが可能です。

サンプルアプリ内の構成は以下のようになっています。

メッセージ一覧のビュー関連

  • MessageViewController.h、MessageViewController.m
    メッセージ一覧ビュー用のUIViewController、UITableView使用
  • MessageViewController.xib
    メッセージ一覧ビュー用のxibファイル、一覧表示用のTable Viewが含まれる
  • MessageCell.h、MessageCell.h
    メッセージ一覧ビューの各行に使用されるUITableViewCell
  • MessageCell.xib
    メッセージ一覧ビューの各業に使用されるTable View Cellビューのxibファイル

メッセージ本文のビュー関連

  • ContentViewController.h、ContentViewController.m
    メッセージ本文ビュー用のUIViewController
  • ContentViewController.xib
    メッセージ本文ビュー用のxibファイル、本文表示用のWeb Viewが含まれる

お知らせ管理機能に関するAPIの詳細についてはAPIリファレンスの項目をご参照ください。

アプリのリリース

本SDKを組み込んだアプリをリリースする前に、必ず以下の手順を行って下さい。

  • リリースするアプリにて、前項の手順でプッシュ通知が配信されることを確認する
  • デベロッパーサイトにログインし、アプリケーション管理画面の設定でProduction用の証明書をアップロードする
  • Xcodeにて、Project NavigatorにダウンロードしたSDK内のPushSDK/Release/FelloPush.framework, FelloPush.bundleをドラッグ&ドロップで登録する(Debug版は登録解除する)

    Bitcodeを有効にする場合は、PushSDK下のbitcodeフォルダ内のファイルを登録する

  • 広告ネットワーク機能を利用する場合は広告ネットワーク機能を組み込んだアプリのリリース前確認も参照

バージョン2.2.0からの変更点

  • isTestのパラメータは廃止され、自動的に選択されるようになりました。
  • サンドボックスモードを廃止しました。デバッグ中のアプリにプッシュ通知を送信する際は「デバッグ用アプリに送信」にチェックを入れて送信して下さい。
  • サンドボックスモードを解除したアプリについても「デバッグ用アプリに送信」にチェックを入れて送信することでデバッグ中のアプリに送信できるようになりました。

バージョン3.0.0からの変更点

  • お知らせ管理機能を追加しました。

バージョン3.0.11からの変更点

  • プッシュ通知の表示許可を得るためのダイアログ表示を遅延して実行できるようになりました。
    詳しくはAPIリファレンスの項目をご参照ください。
  • Felloサーバに設定されているプッシュ通知を送信するかどうかの設定の変更ができるようになりました。
    詳しくはAPIリファレンスの項目をご参照ください。

バージョン3.0.13からの変更点

  • SDK初期化API(initialize:appId:launchOptions:sdkOptions: API)の引数に、
    SDKの動作を変更する各種オプションを指定することが出来るようになりました。
    詳しくはAPIリファレンスの項目をご参照ください。
  • SDKの初期化処理、プッシュ通知サーバーへの端末登録処理が完了し
    各種API実行の準備ができた時点で呼び出されるコールバックを追加しました。
    変更内容についてはAPIリファレンスの項目をご参照ください。
  • プッシュ通知を受信した際に呼び出されるコールバックを追加しました。
    詳しくはAPIリファレンスの項目をご参照ください。

バージョン3.1.0からの変更点

  • タグ情報登録APIで、日付のタグを指定できるようになりました。
    詳しくはAPIリファレンスの項目をご参照ください。
  • getDeviceToken APIの仕様が変更になりました。
    通知の許可が無効になっている場合など、デバイストークンを取得できない場合はnilを返します。
    変更内容についてはAPIリファレンスの項目をご参照ください。

バージョン3.1.5からの変更点

  • 対応するiOSの最小バージョンを6.0以上に変更しました。
  • Bitcodeに対応しました。
  • App Transport Security(ATS)に対応しました。
    ATS有効の環境下でリッチページ通知を利用する場合、管理画面でのリッチページ登録画面で指定するURLがhttp://r.fello.net/*** となっているものは、https://s3-ap-northeast-1.amazonaws.com/r.fello.net/*** と書き換えてください。
    お知らせ機能でお知らせの本文のURLがhttp://r.fello.net/*** となっている場合、アプリ内で使用する場合はアプリ側でhttps://s3-ap-northeast-1.amazonaws.com/r.fello.net/*** と書き換えてください。

APIリファレンス

プッシュ通知機能に関して、APIのより詳細な説明を見ることが出来ます。
APIリファレンスの項目をご参照ください。