プラグイン

「iOS用認証プラグイン」は、iOSネイティブアプリでAPIを使用する際に必要な認証機能を提供するFrameworkです。当プラグインを使用することによってiOS端末ローカル上にあるhtmlファイルからAPIを使用することが可能になります。
※)有料版ユーザのみご利用いただけます
※)認証にはコンシューマ・キー、コンシューマ・シークレットが必要です。詳細は担当営業までお問い合わせ下さい
※)別途、Frameworkをプロジェクトに追加する必要があります。こちらからzipファイルを取得して解凍して下さい
※)htmlの文字コードは UTF-8を使用して下さい
※)"Build Settings"の"Other Linker Flags"に-ObjCを指定して下さい
※)動作確認済みのOSはiOS 5 ~ 8です。
  上記以外のバージョンは動作未確認あるいは動作しない事が確認されております。
  また、WKWebView には対応しておりません。

※)apiドキュメントは以下のリンクをクリックすると別ページで開きます


ソースコードと解説

APIを利用して地図を表示するには、 ItsmoNaviOauthClientクラスのprepareWebViewInfoメソッドで画面情報を設定した後、loadJsメソッドを実行します。

#import "ZDCViewController.h"
#import <ItsmoNaviOauthClient/ItsmoNaviOauthClient.h>

@interface ZDCViewController ()
    @property (weak, nonatomic) IBOutlet UIWebView *topWebView;
@end

@implementation ZDCViewController {
    ItsmoNaviOauthClient* client;
}
// OAuth認証で使用するコンシューマ・キー
NSString *CONSUMER_KEY = @"*********************";
// OAuth認証で使用するコンシューマ・シークレット
NSString *CONSUMER_SECRET = @"***************************";

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    // コンシューマ・キー、コンシューマ・シークレット、環境情報を元にItsmoNaviOauthClientのインスタンスを生成する
    client = [[ItsmoNaviOauthClient alloc] initWithOauthInfo:CONSUMER_KEY secret:CONSUMER_SECRET env:ENV_TEST];
    [client prepareWebViewInfo:self.topWebView /* 地図を表示するWebView */
                          file:@"index" /* 表示させたいhtmlファイル */
                           dir:@"www" /* htmlが配置されているディレクトリ */
                         /* ローダのパラメータ。エラー時、JavaScriptのアラート表示させるためalert=1を指定 */
                         param:@"?ver=2.0&alert=1&api=zdcmap.js,control.js,shape.js,search.js"];

    // apiをロードする
    [client loadJs:^{
        // apiロード成功時の処理
        [self displayAlert:@"loaded!"];
    } failure:^(NSError *error) {
        NSLog(@"Error : %@", error);
        NSString *errorMsg = @"";
        NSInteger errorCode = [error code];
        if (errorCode == 1001) {
            errorMsg = @"ファイル読み取り時にエラーが発生しました。";
        } else if (errorCode == 1002) {
            errorMsg = @"通信エラーが発生しました。";
        } else if (errorCode == 1003) {
            errorMsg = @"環境エラーが発生しました。";
        } else {
            errorMsg = @"予期せぬエラーが発生しました。";
        }
        // apiロード失敗時はエラーメッセージを表示する
        [self displayAlert:errorMsg];
    }];

}

- (void)displayAlert:(NSString*)text
{
    Class class = NSClassFromString(@"UIAlertController");
    if (class) {
        UIAlertController *alert = nil;
        alert = [UIAlertController alertControllerWithTitle:@""
                                                    message:text
                                             preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction actionWithTitle:@"OK"
                                                  style:UIAlertActionStyleDefault
                                                handler:nil]];
        [self presentViewController:alert animated:YES completion:nil];
    } else {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@""
                                                        message:text
                                                       delegate:nil
                                              cancelButtonTitle:nil
                                              otherButtonTitles:@"OK", nil];
        [alert show];
    }
}

@end