課金処理とたたかう.pdf
by
Nobuyuki Nishiyama
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
QPUBUPUJQT ՝ۚॲཧͱ͔ͨͨ͏ʂ ΅ͬͪήʔϜσϕϩού ࢁ৴ߦɹ
Slide 2
Slide 2 text
࡞ΞϓϦʮύζϧˍϞφʔΫʯ ສμϯϩʔυಥഁ
Slide 3
Slide 3 text
࣮՝ۚॲཧͷ࣮ॳΊͯʂ
Slide 4
Slide 4 text
ࠓͲ͖0CKFDUJWF$Ͱ՝ۚॲཧΛ ॻ͍ͨϨΞέʔεʂ
Slide 5
Slide 5 text
ʮ՝ۚͨ͠ΒΞϓϦ͕ىಈ͠ͳ͘ ͳͬͨʂʯ
Slide 6
Slide 6 text
खݩͷڥͰ࠶ݱͰ͖ͳ͍ʜ
Slide 7
Slide 7 text
ͱΓ͋͑ͣιʔείʔυΛಡΉ
Slide 8
Slide 8 text
͓ʁ // 課金成功時に記録を保存する void purchased(std::string id) { // 課金ID→内部ID std::map tbl{ { "PERCHASE01", "PERCHASE-01" }, { "PERCHASE02", "PERCHASE-02" }, }; // 課金ID→内部ID にしたのを保存 setRecord(tbl.at(id)); }
Slide 9
Slide 9 text
// 課金成功時に記録を保存する void purchased(std::string id) { // 課金ID→内部ID std::map tbl{ { "PERCHASE01", "PERCHASE-01" }, { "PERCHASE02", "PERCHASE-02" }, }; // 無効な課金IDだとここでアプリが落ちる setRecord(tbl.at(id)); }
Slide 10
Slide 10 text
ͬ͞͞ͱमਖ਼ // 課金成功時に記録を保存する void purchased(std::string id) { // 課金ID→内部ID std::map tbl{ { "PERCHASE01", "PERCHASE-01" }, { "PERCHASE02", "PERCHASE-02" }, }; // 無効なIDでなければ処理する if (tbl.count(id)) { setRecord(tbl.at(id)); } }
Slide 11
Slide 11 text
ͬͦͯ͘͞͠όʔδϣϯΞοϓ ਃʂ
Slide 12
Slide 12 text
ʮͬͺΓىಈ͠·ͤΜɻʯ
Slide 13
Slide 13 text
;ͨͨͼιʔείʔυΛಡΉ
Slide 14
Slide 14 text
͓ʁ // 課金情報を取得 void price(NSString* product_id, id viewController) { NSSet* id_set = [NSSet setWithObject:product_id]; // リクエストを生成 SKProductsRequest* request = [[[SKProductsRequest alloc] initWithProductIdentifiers:id_set] autorelease]; request.delegate = viewController; // 取得開始! [request start]; }
Slide 15
Slide 15 text
উखʹղ์ͨ͠Βμϝͳͭʜʁ // 課金情報を取得 void price(NSString* product_id, id viewController) { NSSet* id_set = [NSSet setWithObject:product_id]; // リクエストを生成 SKProductsRequest* request = [[[SKProductsRequest alloc] initWithProductIdentifiers:id_set] autorelease]; request.delegate = viewController; // 取得開始! [request start]; }
Slide 16
Slide 16 text
ͬͦͯ͘͞͠όʔδϣϯΞοϓ ਃʂ
Slide 17
Slide 17 text
ʮͬͺΓىಈ͠·ͤΜɻʯ
Slide 18
Slide 18 text
·ͨιʔείʔυΛಡΉͱ͜Ζ͔ Β͔ʜ
Slide 19
Slide 19 text
ͱʜ͜͜ͰϢʔβʔ͔Βͷوॏͳ ใ͕ʂ
Slide 20
Slide 20 text
ใ̍ʮ՝ۚ࣌ʹΫϨδοτΧʔ υ൪߸Λొͨ͠ʯ
Slide 21
Slide 21 text
wϢʔβʔ͕ॳΊͯ՝ۚͨ࣌͠ͷڍಈ wΞϓϦ͔Β"QQ4UPSFը໘ભҠͯ͠ɺ·ͨΞϓ Ϧʹͬͯ͘Δύλʔϯ
Slide 22
Slide 22 text
ใ̎ʮΫϥογϡϩάʹͦΕΒ ͖͠ใ͕ʂʯ
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
͜Ε͔ʂ // 課金成功時の処理 void provideContent(NSString* productIdentifier) { // IDをNSString→std::stringにして課金完了処理へ purchase_completed([productIdentifier UTF8String]); } // 課金完了処理 void purchase_completed(std::string& id) { // 色々処理 }
Slide 25
Slide 25 text
// 課金成功時の処理 void provideContent(NSString* productIdentifier) { // 変換結果が null の場合があり得る purchase_completed([productIdentifier UTF8String]); } // 課金完了処理 void purchase_completed(std::string& id) { // idが null の場合にアプリが落ちる }
Slide 26
Slide 26 text
͜͏ͨ͠ // 課金成功時の処理 - (void)provideContent:(NSString *)productIdentifier { std::string id = productIdentifier ? [productIdentifier UTF8String] : ""; ngs::purchase_completed(id); } // 課金完了処理 void purchase_completed(std::string& id) { // idがnullになることはない }
Slide 27
Slide 27 text
ʮىಈ͠·ͨ͠ʂ͋Γ͕ͱ͏͟͝ ͍·͢ʂʂʂʂʯ
Slide 28
Slide 28 text
̎ϲֻ݄͚ͯղܾʂ
Slide 29
Slide 29 text
wखݩͰ࠶ݱͰ͖ͳ͍ෆ۩߹ͷղܾ͍͠ wϢʔβʔ͔Βͷࠣ͘͝ࡉͳใࠂݟಀ͞ͳ͍ w͖͋ΒΊͳ͍ؾ࣋ͪ ·ͱΊ
Slide 30
Slide 30 text
w5XJUUFS!NJOHBNF w'BDFCPPLNJOHBNF w(JU)VCUFLOJTIJ wΞϓϦͷιʔείʔυIUUQTHJUIVCDPN UFLOJTIJ1V[[MF"OE.POBSDI ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ