ページの先頭行へ戻る
Interstage Mobile Application Server V1.3.0 アプリケーション開発ガイド
FUJITSU Software

6.5.4 APNsプッシュ通知を利用するネイティブアプリケーションの開発

APNsプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備

APNsプッシュ通知を利用するネイティブアプリケーションを開発するための事前準備として以下を行います。

  1. Mac OSXのキーチェーンサービス上でCSRを作成します。
  2. iOS Develper Centerに、APNsを利用するアプリ情報を登録します。
  3. APNsを利用するためのSSL証明書を発行します。
  4. APNsを利用するためのプロビジョニングファイルを作成します。
  5. APNsを利用するために発行したSSL証明書をダウンロードし、Mac OSXのキーチェーンサービス上で作成したCSRの秘密鍵と共にPKCS#12形式の証明書を作成します。
  6. プロビジョニングファイルをXcodeに取り込み、iOSアプリをビルドします。
  7. PKCS#12をプッシュサーバに登録します。

詳細は、iOS Develoepr Center内を参照してください。

APNsプッシュ通知を利用するネイティブアプリケーション向けのAPIはObjective-Cで提供します。

IMAPS向けのネイティブアプリケーションの開発環境を準備後、以下からzipファイルを取得し、Mac上で展開してください。
Windows
<DVD-ROMドライブ>\development\ios\push\FJPHandlerLib.1.0.zip
Linux
<DVD-ROMマウントディレクトリ>/development/ios/push/FJPHandlerLib.1.0.zip

APNsプッシュ通知を利用するネイティブアプリケーションの開発には、以下の作業が必要です。

  • プッシュクライアント設定ファイルの作成
  • プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

1. プッシュクライアント設定ファイルの作成

プッシュハンドラに渡すパラメータを、プッシュクライアント設定ファイル(push.plist)に設定します。プッシュクライアント設定ファイルについては、付録D プッシュクライアント設定ファイルを参照してください。

2. プッシュクライアント設定ファイル設定、プッシュハンドラ初期化処理の作成

プッシュクライアント設定ファイル情報は、プッシュハンドラを利用する前に設定します。
以下はプッシュハンドラ初期化処理の例です。

  1. main.mのmain関数で、ネイティブ層で利用するUIApplicationクラスをプッシュハンドラのクラスに変更します。
    return UIApplicationMain(argc, argv,NSStringFromClass([FJPApplication class]),
                              NSStringFromClass([XXXAppDelegate class]));
  2. XXXAppDelegateクラスの親クラスをプッシュハンドラに変更します。
    @interface XXXAppDelegate :  FJPAppDelegate
        ...
  3. XXXAppDelegateクラスの初回起動時(application:didFinishLaunchingWithOptions:)などで、APNsにリモート通知を要求します。
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        [super application:(UIApplication *)application 
        didFinishLaunchingWithOptions:(NSDictionary *)launchOptions];
    
        // APNsにリモート通知を要求
        UIUserNotificationSettings* notificationSettings =
            [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound
                                                                  | UIUserNotificationTypeAlert
                                                                  | UIUserNotificationTypeBadge)
                                                             categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];


    注) [UIAppliaction registerForRemoteNotificationType:]を呼び出すとAPNsに対してデバイストークンが要求され、IMAPSサーバにデバイストークンが登録されます。APNsから返されるデバイストークンが変更される可能性があるため、プッシュ機能の利用の際は定期的に呼び出してください。

  4. XXXViewControllerクラスの親クラスをプッシュ部品に変更します。
    //@interface XXXViewController : UIViewController
    @interface XXXViewController :  FJPViewController
        …

    UIViewController以外の画面で構成されているユーザーアプリケーションにおいても、フォアグラウンド時のAPNsプッシュ通知のダイアログ表示を可能にする場合は、以下のように変更します。

    XXXViewController.h(ヘッダファイル側)】
    // FJPViewControllerProtocolを実装します。
    
    //@interface XXXViewController : UINavigationViewController 
    @interface XXXViewController : UINavigationViewController<FJPViewControllerProtocol>…
        …
    【XXXViewController.m(実装ファイル側】
    //実装例(ダイアログを表示させる場合)
    - (BOOL)isShowOnForeground 
    { 
        return YES; 
    }

    isShowOnForeground関数を実装し、最前面時のプッシュ通知でダイアログを表示させる場合はYESを返します。

    注) isShowOnForeground関数が実装されていない場合、また、FJPViewControllerProtocolが実装されていない場合は、最前面時にプッシュ通知されてもダイアログは表示されません。

ログ出力を行う場合、6.5.6 ログ出力のカスタマイズを参照してください。

認証の設定は、6.5.7 認証クラスの定義を参照してください。

拡張データを指定する場合は、6.5.8 拡張データの指定の指定を参照してください。

エラー通知受け取りを行う場合、6.5.11 APNsプッシュの処理結果受け取りを参照してください。

既読通知機能の利用を行う場合、6.5.13 既読通知機能の利用を参照してください。

参考

APNsプッシュハンドラ初期化処理(FJPAppDelegate)では、APNsとの通信とIMAPSサーバとの通信を伴います。そのため、開発中に以下の環境でAPNsプッシュの動作確認を行いたい場合、[モバイルデータ通信][WiFi]ONにしておくことで可能となります。
  • IMAPSサーバがイントラネットに配置されており、イントラネット内WiFiで接続する環境
  • さらに、イントラネット内からAPNsへのアクセスが(ファイアウォールなどで)遮断される環境