objective-cには無名クラスが無い(たぶん)。
なのにだいたいインタフェースがオブザーバー。
その都度処理かえるのがめんどい。
ということでBlocksインタフェースをつけちゃいます。
今日はStoreKit。
目標
課金処理の見通しよくする
使う側をこんな感じに
課金処理で結局何がしたいかというと、
・課金をリクエストして成功したか失敗したか。
・リストアをリクエストして成功したか失敗したか
controller.m
// 購入処理
SLSK* slsk = [SLSK getInstance];
slsk.onFail = ^(NSError* error){
NSLog(@"%@", error.debugDescription);
};
slsk.onPurchaseSuccess = ^(NSString* productIdentifier){
NSLog(@"%@ 購入完了", productIdentifier);
};
[slsk puchase:@"com.subakolab.tyarintyariiiiiiin" /*productIdentifier*/];
// リストア
SLSK* slsk = [SLSK getInstance];
slsk.onFail = ^(NSError* error){
NSLog(@"%@", error.debugDescription);
};
// リストア対象のアドオンの数だけ呼ばれる
slsk.onRestoreSuccess = ^(NSString* productIdentifier){
NSLog(@"リストアアドオン:%@", productIdentifier);
};
// リストアが全部終わったら呼ばれる
slsk.onRestoreComplete = ^(){
NSLog(@"リストア完了!");
};