游戏接入IOS内购代码详解[适合新手](上)

前言

公司的游戏(使用laya引擎和typescript语言开发的游戏)需要接入ios内购,第一次接触ios开发、ios充值、objective-c(下面简写oc)语言的我有些措手不及。花了很长时间终于完成任务。在此写下此博客作为开发日志,仅供参考,写得不好望体谅。
在网上搜了很多资料,最后找到一篇比较靠谱的然后改了一些我自己的:参考简书的链接:ios内购IAP

(吐槽:网上的一堆关于ios内购教程的实在不适合完全没有接触过ios开发的同学看啊-.-*,核心代码是有,但没有完整的一个js代码与oc代码互相调用的介绍)

介绍

首先什么是ios内购,百度会有详细介绍,这里就不述说了。然后接入ios内购的非代码部分也不述说了,因为这是游戏运营人员去完成的,何况我也不懂。
在确保基础配置弄好之后,比如已经申请了开发bundle Id、创建了内购项目获得了商品id、申请了沙盒测试账号、拿到了电子证书什么.p12啊什么.mobileprovision等等。就开始可以接入内购代码啦。注意要是你没看过objective-c的代码,你一定要去先学一下,因为内购涉及了很多objective-c的特性,你不懂肯定一头雾水的

内购实现原理(重要):

首先要清楚你要如何实现内购,从哪一步开始调用oc内购代码,然后一步步执行下去,我的实现逻辑如下:
1、首先在游戏里点击购买指定商品的按钮。假设这个商品id是3。
2、点击按钮后响应函数:把该商品的 id:3 传递给oc内购代码(这里就涉及ts如何调用oc代码,Laya引擎官方文档有)。注意这里还要想想,你除了传递id给oc内购代码,还需要传什么参数给oc内购代码呢?比如支付成功与否的回调函数?
3、oc内购代码收到 id参数,根据 id一步步执行代理的函数.
4、执行完判断支付是否完成,成功了要怎样,失败了要怎样。

那么开始接入内购代码吧,注意是接入不是编写,因为那是一套"模板"来的,接口苹果都已经给你写好了的,你只是拿来用然后加入自己的那部分就可以了.
这里先述ios的objective-c内购部分:

1、首先你要从laya或者其他游戏引擎把你的游戏项目构建成ios的项目,上传到一台mac机去使用xcode开发。
2、在你的xcode工程下创建两个文件:RechargeVC.h 头文件和RechargeVC.m 执行文件,写入内购代码:
3、在工程的JSBridge.m调用RechargeVC.m的IosBuy函数.

RechargeVC.h:(有注释详解)
#import <StoreKit/StoreKit.h>         //注意这个头文件要加入,是内购必须
#import <conchRuntime.h>            //想要oc调用ts的方法,就要加入这个.h
enum
{
    IAP1=3,
    IAP2=4,
    IAP7=7,
    IAP8=8,
    IAP9=9,
    IAP10=10,
    IAP11=11,
}buyCoinsTag; //枚举:内购商品id序列,为什么从3开始?因为这只是我们游戏的商品id,各位可以按照实际改


//↓↓↓↓代理:一定要添加<SKPaymentTransactionObserver,SKProductsRequestDelegate >代理啊↓↓↓↓
@interface RechargeVC : NSObject <SKPaymentTransactionObserver,SKProductsRequestDelegate >
{
    int buyTypeInt;//定义一个整型变量,.m文件用
}

//下面是.m文件用到的函数定义,直接复制就行,详解在.m文件。这些函数都是苹果的回调函数来的,根据一定规则它就会被调用.
//你只需要拿来用就行,不然你试试改下面任何一个函数里任何字母?看会不会出问题?
- (void)viewDidLoad;
- (void) requestProUpgradeProductData;
- (void)RequestProductData;
- (void)IosBuy:(NSString*)pID callback:(NSString*) callbackcode;//这个是我写的函数,这个作为ts调用oc代码的接口
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions;
- (void) PurchasedTransaction: (SKPaymentTransaction *)transaction;
- (void) completeTransaction: (SKPaymentTransaction *)transaction;
- (void) failedTransaction: (SKPaymentTransaction *)transaction;
- (void) paymentQueueRestoreCompletedTransactionsFinished: (SKPaymentTransaction *)transaction;
- (void) paymentQueue:(SKPaymentQueue *) paymentQueue restoreCompletedTransactionsFailedWithError:(NSErro
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值