Godot - iOS方面的功能配置

包括 purchase 和 iap兵怯, gamecenter题涨,等之后用到再補充
https://docs.godotengine.org/zh_CN/latest/tutorials/platform/services_for_ios.html

Store Kit

一些支付代碼參考
https://gist.github.com/FEDE0D/8595c1cf5e0a3263fdbc

對應源碼:platform/iphone/in_app_store.mm
https://github.com/godotengine/godot/blob/master/platform/iphone/in_app_store.mm

godot xcode部分源碼

header定義

//獲取產(chǎn)品信息
    Error request_product_info(Variant p_params);
//恢復購買
    Error restore_purchases();
//購買
    Error purchase(Variant p_params);

//正在處理的事件數(shù)
    int get_pending_event_count();
//拋出最舊(最前)一個事件,并返回此事件
    Variant pop_pending_event();
//完成交易
    void finish_transaction(String product_id);
//設置是否自動完成交易
    void set_auto_finish_transaction(bool b);

//(內(nèi))發(fā)送事件
    void _post_event(Variant p_event);
//(內(nèi))記錄事件
    void _record_purchase(String product_id);

//(內(nèi))單例
    static InAppStore *get_singleton();

主文件下定義了鏈接:

void InAppStore::_bind_methods() {
    ClassDB::bind_method(D_METHOD("request_product_info"), &InAppStore::request_product_info);
    ClassDB::bind_method(D_METHOD("restore_purchases"), &InAppStore::restore_purchases);
    ClassDB::bind_method(D_METHOD("purchase"), &InAppStore::purchase);

    ClassDB::bind_method(D_METHOD("get_pending_event_count"), &InAppStore::get_pending_event_count);
    ClassDB::bind_method(D_METHOD("pop_pending_event"), &InAppStore::pop_pending_event);
    ClassDB::bind_method(D_METHOD("finish_transaction"), &InAppStore::finish_transaction);
    ClassDB::bind_method(D_METHOD("set_auto_finish_transaction"), &InAppStore::set_auto_finish_transaction);
};

我想或渤,這些經(jīng)過綁定的函數(shù),應該才是可以被調(diào)用的

先看purchase函數(shù):
參數(shù)必須符合:包含product_id關鍵字

發(fā)送支付申請

    NSString *pid = [[[NSString alloc] initWithUTF8String:String(params["product_id"]).utf8().get_data()] autorelease];
    SKPayment *payment = [SKPayment paymentWithProductIdentifier:pid];
    SKPaymentQueue *defq = [SKPaymentQueue defaultQueue];
    [defq addPayment:payment];
    printf("purchase sent!\n");

iap 使用方法

獲得單例

InAppStore = Engine.get_singleton("InAppStore")

激活購買 purchase必須包含關鍵字product_id

    var result = InAppStore.purchase( { "product_id": "getpro" } )
    if result == OK:
        print("next action")

restore 恢復購買功能,無參數(shù)

    var result =  InAppStore.restore_purchases()
    if result== OK:

當執(zhí)行purchase和restore后result狀態(tài)為ok(無異常)時棚菊,使用timer來反復偵聽

func check_events_real():
    if !InAppStore:
        return
    while InAppStore.get_pending_event_count() > 0:
        var event = InAppStore.pop_pending_event()
        if event.type == "purchase":
            if event.result == "ok":
                show_success(event.product_id)
            else:
                show_error()

var event = InAppStore.pop_pending_event() 中event對應參數(shù)

參數(shù) 數(shù)組 意義
titles 標題
descriptions 描述
prices 價格
ids id組
localized_prices 本地價格
currency_codes 貨幣代碼
type 類型,purchase / restore
result 字符串:ok叔汁,error
product_id 當前id號
transaction_id 當前交易id

GameCenter


https://docs.godotengine.org/zh_CN/latest/tutorials/platform/services_for_ios.html
可以按照iap鏈接手法來處理

godot和ios之間通信不是對等的统求,ios無法請求godot方的函數(shù),所以無論是發(fā)送還是獲取信息据块,都是要godot來主動觸發(fā)的码邻。所以獲取結果的時候就出現(xiàn)了需要循環(huán)去檢索的方法(也是沒辦法)

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市另假,隨后出現(xiàn)的幾起案子像屋,更是在濱河造成了極大的恐慌,老刑警劉巖边篮,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件己莺,死亡現(xiàn)場離奇詭異奏甫,居然都是意外死亡,警方通過查閱死者的電腦和手機凌受,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門阵子,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胜蛉,你說我怎么就攤上這事挠进。” “怎么了誊册?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵领突,是天一觀的道長。 經(jīng)常有香客問我解虱,道長攘须,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任殴泰,我火速辦了婚禮于宙,結果婚禮上,老公的妹妹穿的比我還像新娘捞魁。我一直安慰自己离咐,他們只是感情好,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布昆著。 她就那樣靜靜地躺著术陶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪接谨。 梳的紋絲不亂的頭發(fā)上塘匣,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機與錄音扫夜,去河邊找鬼。 笑死现拒,一個胖子當著我的面吹牛望侈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播侥猬,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼退唠,長吁一口氣:“原來是場噩夢啊……” “哼荤胁!你這毒婦竟也來了?” 一聲冷哼從身側響起垢油,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤圆丹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后硝枉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倦微,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡欣福,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棕诵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凿将。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡牧抵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出犀变,到底是詐尸還是另有隱情,我是刑警寧澤蠢正,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布嚣崭,位于F島的核電站雹舀,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏粗俱。R本人自食惡果不足惜寸认,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一偏塞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烛愧,春花似錦、人聲如沸慎冤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽但狭。三九已至,卻和暖如春呈队,著一層夾襖步出監(jiān)牢的瞬間唱歧,已是汗流浹背粒竖。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工蕊苗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沿彭,地道東北人。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓锅移,卻偏偏與公主長得像饱搏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子备绽,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容