mixi API SDK for iOSは開発者の方がiOSネイティブのmixiアプリをできる限り簡単に開発することができるように開発されました。
mixi API SDK for iOSの特徴は、以下の通りです。
- 個人・法人に関わらず、個人パートナー登録すればどなたでも開発可能
- OAuth 2.0の認証/認可手順の実装が不要
- Tokenの取得/更新を自動化
- APIコールを統一的な手順で実行可能
- シングルサインオンが可能でユーザ認可時のパスワード入力不要
本SDKにてサポートするiOS端末は以下の通りです。
- iPhone(iOS4.0以降搭載) **1
**1 iPadについては、対応未定
- mixiアプリ
- People API
- Groups API
- Photo API
- Request API
- Communication Feed **2
- Graph API **3
- People API
- Groups API
- People lookup API
- Voice API
- Updates API
- Check API
- Photo API
- Message API
- Diary API
- Check-in API
- Profile Image API
**2 Communication Feedについては、今後提供予定
**3 基本的に提供されているすべての Graph API が利用可能です。
なお、Geolocation APIについてはTouch版/モバイル版と異なり、弊社への許諾なしに利用することが可能です。
mixi API SDK for iOS を利用するには、以下のファイルをダウンロードしてください。 ダウンロードすると、mixi API SDK for iOS の利用規約に同意したものと見なされます。
package | version | size | date |
---|---|---|---|
mixiIOSSDK-1.5.1.zip | v1.5.1 | 610KB | 2013-09-12 |
v1.5.0 2013-09-12
- 不具合修正(画像圧縮)
v1.4.9 2013-01-07
- HTTPレスポンスを確認するデリゲートメソッド(MixiDelegate#mixi:didReceiveResponse:)を追加
v1.4.8 2012-10-26
- SDK付属認可画面のログインクッキーのクリア処理を追加
v1.4.7 2012-10-11
- revokeAndLogoutの追加
v1.4.6 2012-09-21
- ログインボタンの二度押し防止
- iOS6でのwarning抑止
v1.4.5 2012-07-26
- リクエストAPIのエラー処理方法を変更
- 不具合修正(APIの同期呼出・Graph APIのSDK単独認可)
v1.4.4 2012-07-13
- 認可画面から他画面へ遷移を制限
- 不具合修正(認可情報の保持)
v1.4.3 2012-06-20
- 不具合修正(公式アプリ連携)
v1.4.2 2012-06-20
- SDK付属認可画面用デリゲート設定方法変更
v1.4.1 2012-06-19
- mixi公式iPhoneアプリの存在チェックのタイミングをアプリ起動時から認可実行前に変更
- SDK付属の認可画面用デリゲート処理実行後に必ずモーダルビューを閉じるように変更
v1.4.0 2012-06-14
- mixiアプリでのSDK単独認可を許可
- mixi公式iPhoneアプリの有無に応じて認可手段を自動変更
- (注) 1.3.6以前とはmixi公式iPhoneアプリがインストールされていない場合の処理が異なります。以前と同じ動作をさせるにはmixi.authorizerの値を明示的にMixiAppAuthorizerオブジェクトに設定します。
v1.3.6 2012-04-06
- 不具合修正(mixiアプリでのSDK単独認可を停止)
v1.3.5 2011-04-02
- @throw を NSException#raise に変更
v1.3.4 2012-03-28
- Graph APIのSDK単独認可においてツールバーの「閉じる」ボタン押下を通知
- 不具合修正(エラーコード変更・公式アプリダウンロード)
v1.3.3 2012-03-15
- 不具合修正(UserDefaults)
v1.3.2 2012-03-01
- 不具合修正(リクエストAPIキャンセル通知)
v1.3.1 2012-02-21
- リクエストAPIキャンセル通知
v1.3 2012-02-13
- mixi公式iPhoneアプリを使用せずにGraph APIを認可
- ディレクトリ構造変更
- 不具合修正(ボイス取得API)
v1.2.1 2011-12-28
- 不具合修正(メモリリーク)
v1.2 2011-10-31
- mixi_apps2スコープの導入とmixi_appsスコープの廃止
- 不具合修正(リクエストAPI呼び出し、MixiConfigのappIdプロパティ削除)
v1.1 2011-09-30
- mAP対応
v1.0 2011-09-20
- 提供開始
本SDKを用いてiOSアプリを開発するための手順を説明します。
SDKを利用するには、あらかじめ Partner Dashboard にてアプリケーションが登録されている必要があります。まず、Partner Dashboard の mixiアプリ登録ページにて登録を行なってください。その際、対応デバイスの項目で「スマートフォンに対応(iOS版)」にチェックをすることでSDKが利用可能になります。
SDKを利用するには、あらかじめ Partner Dashboard にてアプリケーションが登録されている必要があります。まず、Partner Dashboard の mixi Graph APIのサービス登録ページにてアプリケーションを登録をしてください。
その際、"起動URIスキーム"を以下を参考に登録してください。
ユーザがmixiサイト上のアプリケーション一覧やフィードをクリックした際に、WebブラウザからiOSアプリケーションが起動されることになります。この時に利用されるのが、起動URIスキームです。 初期値は以下の値に設定されています。
- mixiapp-<APP_ID>://run
この起動URIスキームの<APP_ID>の部分は変更可能です。できるだけ変更されることをお勧めします。変更を行う場合は、Partner Dashboardのアプリ設定ページから変更してください。 この起動URIスキームを実際にアプリケーションが受け取るためには、アプリケーションの Info.plist に適切な値を設定する必要があります。
SDK(mixiIOSSDK-[ver].zip)をダウンロードして展開し、lib/MixiSDKをプロジェクトのソースディレクトリに配置します。
通常のiOSプロジェクト作成手順に従ってプロジェクトを作成します。
mixi API SDK for iOSは次のフレームワークを必要とします。
- CFNetwork.framework
- Security.framework
- SystemConfiguration.framework
Partner Dashboardに登録した起動URIスキームをプロジェクトに追加します。
これで開発を始める準備は整いました。次からは、いよいよAPIの利用方法を説明していきます。
mixi API SDK for iOS を利用したアプリケーションを開発する際のコードの記述方法について説明します。
SDKを利用する場合は次のヘッダファイルをインポートしてください。
#import "MixiSDK.h"
mixi APIの呼び出しに使用するMixiクラスはシングルトンクラスです。インスタンスは次のようにして取得できます。
[Mixi sharedMixi]
ただし、APIを実行する前に一度シングルトンオブジェクトを初期化しておく必要があります。例えばGraph APIを使用する場合、
UIApplicationDelegate#application:didFinishLaunchingWithOptions:
メソッド内で次のように記述するといいでしょう。(全ての引数はアプリケーションの設定に合わせて変更してください)
Mixi *mixi = [[Mixi sharedMixi] setupWithType:kMixiApiTypeSelectorGraphApi
clientId:@"ab12c345de6789f12345"
secret:@"a1b2c3456d789ef0123ghi4567jklmn89op01qrs"
redirectUrl:@"mixi-connect://success"];
[mixi restore];
[mixi reportOncePerDay];
mixiアプリの場合、 redirectUrl は不要です。
Mixi *mixi = [[Mixi sharedMixi] setupWithType:kMixiApiTypeSelectorMixiApp
clientId:@"ab12c345de6789f12345"
secret:@"a1b2c3456d789ef0123ghi4567jklmn89op01qrs"];
[mixi restore];
[mixi reportOncePerDay];
なお、上記のMixi#reportOncePerDayはアプリの起動をmixiに通知するものです。 このコードの追記は任意ですが、サービスの改善のために協力していただけると幸いです。 アプリケーションの情報は一切送信されません。
mixiアプリのAPIを利用するためには、ユーザにAPI利用のための認可を行なってもらう必要があります。そのための画面を表示するのが authorize: メソッドです。
[mixi authorize:@"r_profile", @"w_diary", nil];
このメソッドを呼び出すことで、ユーザーの認可を促す画面が表示されます。
デフォルトではmixi公式iPhoneアプリ(以下、公式アプリ)の有無によって認可画面の表示に異なるオブジェクトが利用されるため、公式アプリを使用した認可、およびSDK単体での認可に対応した2つの処理を記述してください。
端末に公式アプリがインストールされている場合は、認可/認可解除は公式アプリを利用して行われます。 公式アプリを利用して認可するとログイン情報が公式アプリと共有されるため、公式アプリですでにログイン済みであればユーザーIDとパスワードの入力を省略できます。
公式アプリから認可結果(アクセストークンなど)を受け取るために
UIApplicationDelegate#application:openURL:sourceApplication:annotation:
メソッドに次のような処理を追加してください。
NSError *error = nil;
NSString *apiType = [[Mixi sharedMixi] application:application openURL:url sourceApplication:sourceApplication annotation:annotation error:&error];
if (error) {
// エラーが発生しました
}
else if ([apiType isEqualToString:kMixiAppApiTypeToken]) {
// 認可処理に成功しました
}
else if ([apiType isEqualToString:kMixiAppApiTypeRevoke]) {
// 認可解除処理に成功しました
}
else if ([apiType isEqualToString:kMixiAppApiTypeReceiveRequest]) {
// リクエストAPIによるリクエスト受け取り
}
SDKの持つウェブビューコントローラを使用して認可画面を表示するには、そのビューコントローラの親になるビューコントローラを設定します。
APIを呼び出すビューコントローラのUIViewController#viewDidAppear:に次のようなコードを追加してください。(MixiAuthorizer#setParentViewControllerに設定する値は適宜変更してください)
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
Mixi *mixi = [Mixi sharedMixi];
mixi.authorizer.parentViewController = [self navigationController];
}
認可が完了するとその結果はSDK内に保持され、事前設定されたparentViewControllerに処理が戻されます。 認可完了時にそれら以外の処理を実行する必要がある場合は認可オブジェクトにデリゲートを設定してください。
mixi.authorizer.delegte = [[YourDelegate alloc] init];
- MixiSDKAuthorizerDelegate#authorizer:didSuccessWithEndpoint:
- MixiSDKAuthorizerDelegate#authorizer:didCancelWithEndpoint:
- MixiSDKAuthorizerDelegate#authorizer:didFailWithEndpoint:error:
現在の認可状態を確認するには、以下のメソッドを利用します。
Mixi#isAuthorized
通常は、認可画面は初回のみ表示され、2回目以降はスキップすることが可能です。isAuthorizedメソッドはそのための確認処理を行います。既に認可済みであれば YES が返り、未認可であれば NO が返ります。
以下のメソッドを呼び出すことで認可状態の解除を行います。なお、mixi API SDK for iOS を利用する場合はユーザ保護の観点から、必ずこの認証解除機能を必ずアプリケーションから呼び出せるようにしてください。
Mixi#revoke
なお、上記メソッドを呼び出しただけではSDK内にキャッシュされている古いアクセストークンは破棄されません。次のメソッドを利用することで認証の解除とアクセストークンの破棄を同時に行うことも可能です。
Mixi#revokeAndLogout
API にアクセスするメソッドは複数ありますが、代表的なメソッドはMixi#sendRequest:delegate: です。本メソッドを利用して、統一的な利用で様々なAPIをコールすることが可能です。
ここでは、APIを呼び出すためのsendRequest:delegate:メソッドの簡単な例を紹介します。各APIに必要なパラメータの意味や戻り値など個々のAPIに関する詳細情報については、SDKに添付されているリファレンスを参照してください。
APIはエンドポイントとパラメーターを設定したMixiRequest
インスタンスを、Mixi#sendRequest:delegate:
メソッドに渡すことで実行します。
API実行前に認可が完了しているかどうかを確認して、未認可の場合は先に認可しておきます。認可に失敗した場合はmixi公式アプリがインストールされていないか、最新版ではない可能性があるので、AppStoreのmixi公式アプリのページを開きます。
if ([mixi isAuthorized]) {
MixiRequest *request = [MixiRequest requestWithEndpoint:@"/people/@me/@friends"];
[mixi sendRequest:request delegate:mixiDelegate];
}
else if (![mixi authorizeForPermission:@"r_profile"]) {
MixiWebViewController *vc = MixiUtilDownloadViewController(self, @selector(closeDownloadView:));
vc.orientationDelegate = self;
[self presentModalViewController:vc animated:YES];
}
API実行結果はsendメソッド群の引数に与えていたMixiDelegate
プロトコルを実装したデリゲートで処理します。
例えば、APIの実行結果をAlertViewで表示するには次のようなデリゲートメソッドを定義したクラスのインスタンスをsendRequest:delegate:メソッドの引数に与えます。
- (void)mixi:(Mixi*)mixi didFinishLoading:(NSString*)data {
MixiUtilShowMessageTitle(data, @"実行結果");
}
上記以外のデリゲートメソッドについてはMixiDelegate
のドキュメントを参照してください。
mixiアドプログラムiOSアプリ版のAPIを利用することで、mixiアドプログラムをiOSアプリ版mixiアプリに組み込むこと ができます。ここでは、mixiアプリにどのようにmixiアドプログラムiOSアプリ版の機能を実装するかを説明いたします。
mixiアドプログラムiOSアプリ版の機能を利用するには、アプリ上で以下の「mixiアドプログラム専用枠」を表示してください。
専用枠サイズ: 横幅100%×縦37px(縦表示、横表示の場合とも)
専用枠には上記の図の1~3の場所に、リンクが設置されます。なお表示位置と表示内容は変更することができません。
mixiアドプログラムiOSアプリ版APIは、どなたでもご利用になれます。なお、お支払い対象となるのはmixiにiOSアプリ版mixiアプリのお申し込みいただき、弊社が承認したmixiアプリのみとなります。
mixiアドプログラムの機能はiOS SDKではMixiADBannerViewクラスで管理されています。mixiアドプログラムを利用するにはInterface Builderを利用して指定された位置にMixiADBannerViewインスタンスを表示するか、MixiADBannerViewインスタンスを画面に表示するコードをプログラム内に含めてください。
複数の画面でMixiADBannerViewを表示する場合は、MixiADBannerViewの共有オブジェクトを利用するといいでしょう。次は共有オブジェクトを利用してMixiADBannerViewを表示する例です。
- (void)loadView {
[super loadView];
[[MixiADBannerView sharedView] addOn:self.view]:
}
デバイスの向きに応じて表示を変える場合はuseOrientationプロパティをYESに設定するか、shouldAutorotateToInterfaceOrientation: メソッド内で明示的に orientation プロパティを設定してください。
― (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
[MixiADBannerView sharedView].orientation = interfaceOrientation;
}
アプリケーションの実装が完了した後、Ad Hocビルドしたバイナリをメールに添付し、下記の通りお送り下さい。
- 宛先: contact-mixiapps@mixi.jp
- 件名: 【iOSアプリ版mAPテスト実行ファイル申請】アプリ名/SAP名
- 内容: リリース予定のアプリケーションのAd Hocビルドしたバイナリ(もしメール上のファイルサイズが添付ファイルを含めて10MBを越える場合は、ダウンロード先・方法を指定してください)
なお、Ad Hoc配布先のデバイスとして下記のUDIDを登録してください。
- 978b464c4afe7b6eacb712a36a86ac68f7da5ab6
ファイルを送付後、下記のページからmixiアドプログラムiOSアプリ版にお申し込みください。