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 ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ