https://www.jianshu.com/p/4045ebf81a1c

Unity苹果(iOS)内购接入(Unity内置IAP)

Kakarottog                          关注            

                 2017.07.13 16:46*               字数 1920             阅读 6592评论 19喜欢 10

        

【【【本教程针对Unity5.4版本!!其它版本需要自己做一些修改】】】 前言:所有这一切的前提是你需要有一个苹果开发者账号,一年99美元,没有的话需要到苹果开发者中心购买。除了本篇教程外,也可以按照Unity官方文档进行开发。文章转自游戏蛮牛 原帖地址


  1. 首先第一步我们需要登录到苹果开发者中心进行我们的APP注册,点击右上角的Account

     
     
  2. 输入你的账号密码后就会进入下面这个界面,然后点击左边的齿轮Certificates, Identifiers & Profiles

     
     
  3. 然后进入到下面这个界面,在左边的Identifiers下面,点击第一个App ids

     
     
  4. 进入之后就会显示你注册过的app,当然如果没有注册过这里是空的,点击右上的“+”添加你的APP,会打开下面这个界面,为了截图我往下拉了一点

     
     

注意:首先第一个红框是你APP的名字,自己决定吧。第二个红框可以稍微正式点,一般我们都会写com.公司名.app名字,这样的组合比较有点样子,这个ID后面要用到 然后下面的按默认的也可以,看实际情况调整。弄完之后点最下面的Continue继续后面的操作我就不截图了,注册完回到App ids页面就可以看到你的刚刚注册的app信息

然后我们打开Itunes connect ,登录你的开发者账号进入下面的界面

 
 

点击红框的地方进去填写银行的信息。这里有一篇帖子写的很详细!转载一下,感谢睡不着的叶子提供的设置教程 http://www.jianshu.com/p/d9d742e82188

游戏帖子说的很详细后面设置APP内购项目的东西我这里就不重复说一次了,有两个地方需要再说一下,第一:银行信息必须得填好!否则没办法进行沙盒测试到真机上会一直无法初始化成功。第二个是当你创建完你的内购产品时记得添加进你的app里头,一会截图详细说明一下。我们先在itunes connect 里头创建你的app,点击上面那张图里头我的app,进入app管理界面

 
 

点击左上角的“+”号然后点击新建APP,红框圈起来的部分就是你刚刚在开发者中心注册时你写的App ids,点击一下就会出现你刚刚注册的id,把剩下的资料填填就可以创建了

 
 

然后就会进到这

 
 

涉及到公司问题所以资料就打上马赛克了,然后这里开始就设置你的内购产品了,根据上面的发的帖子链接走就可以了。设置完成之后呢点击这里的1.0准备提交进入到app信息设置的界面,然后往下拉,找到下面这图的地方

 
 

点击篮筐里头的加号,打开一个小界面,就是下面这样的

 
 

这里就会出现你刚刚设置好的内购产品,然后勾选,点击完成。这步很重要,不然没法获得产品信息,设置完后点左上角存储,产品的信息就算完成了 然后这些界面先别关,还有需要用到的信息。接着我们打开Unity,打开我们的工程,点击windows-->Services,就出现下面的菜单往下拉一点就可以看到In-App purchasing

 
 

然后我们把他从off的状态点击变成on的状态,导入平台所需的文件

 
 

点击红色框的按钮,这里我已经导入了,所以是Update,没导入是Import,点击之后稍等片刻,等他导入完成就好了。然后我们看到官方文档教你如何初始化

using UnityEngine;
using System.Collections;
using UnityEngine.Purchasing; public class PurchaseManager : MonoBehaviour, IStoreListener
{
public BuyManager buyManager;
private IStoreController controller; void Start()
{
var module = StandardPurchasingModule.Instance();
ConfigurationBuilder builder = ConfigurationBuilder.Instance(module);
builder.AddProduct("你设置的产品ID", ProductType.NonConsumable);
UnityPurchasing.Initialize(this, builder);
} /// <summary>
/// Called when Unity IAP is ready to make purchases.
/// </summary>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
this.controller = controller;
} /// <summary>
/// Called when Unity IAP encounters an unrecoverable initialization error.
///
/// Note that this will not be called if Internet is unavailable; Unity IAP
/// will attempt initialization until it becomes available.
/// </summary>
public void OnInitializeFailed(InitializationFailureReason error)
{
} /// <summary>
/// Called when a purchase completes.
///
/// May be called at any time after OnInitialized().
/// </summary>
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
{
return PurchaseProcessingResult.Complete;
} /// <summary>
/// Called when a purchase fails.
/// </summary>
public void OnPurchaseFailed(Product item, PurchaseFailureReason r)
{
}
}

这一段是我自己的加了一点东西进去的代码,其实都是文档提供的,稍作了修改,注意“你设置的产品ID”指的是在Itunes connect里头你设置内购产品时的产品ID,就是这个

 
 

拷贝到代码里头去,然后我们回到游戏场景中,去到你要进行内购那个游戏界面,添加一个内购按钮,点击Windows-->unity IAP -->Create IAP Button就会在场景中出现一个按钮,点击按钮查看下Inspector可以看到这些

 
 

我们可以看到这就是普通的UGUI里头的Button,多了上面这些内容,然后我们点击IAP Catalog..出现下面这个界面

 
 

进到这个界面我们配置一下里头需要的信息,ID还是一样填我们在itunes connect中的ID,如果不一样我不知道会怎样,我还没试过,我是怕出错误什么的,所以直接设成一样的然后点“x”关闭窗口,回到Inspector,点击刚刚的IAP Catalog上面的下拉菜单,你就会发现你刚刚设置的ID了,选中他就可以了。然后我们继续敲代码

打开刚刚我们创建的代码,继续添加一段代码,给按钮作为点击事件

public void OnPurchaseClicked(string productId)
{
controller.InitiatePurchase(productId);
}

就是这段,所以我们完整的代码就是酱婶的

using UnityEngine;
using System.Collections;
using UnityEngine.Purchasing; public class PurchaseManager : MonoBehaviour, IStoreListener
{
public BuyManager buyManager;
private IStoreController controller; void Start()
{
var module = StandardPurchasingModule.Instance();
ConfigurationBuilder builder = ConfigurationBuilder.Instance(module);
builder.AddProduct("com.Minesweeper.Init15", ProductType.NonConsumable);
builder.AddProduct("com.Minesweeper.Init25", ProductType.NonConsumable);
UnityPurchasing.Initialize(this, builder);
} /// <summary>
/// Called when Unity IAP is ready to make purchases.
/// </summary>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
this.controller = controller;
} /// <summary>
/// Called when Unity IAP encounters an unrecoverable initialization error.
///
/// Note that this will not be called if Internet is unavailable; Unity IAP
/// will attempt initialization until it becomes available.
/// </summary>
public void OnInitializeFailed(InitializationFailureReason error)
{
} /// <summary>
/// Called when a purchase completes.
///
/// May be called at any time after OnInitialized().
/// </summary>
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
{
return PurchaseProcessingResult.Complete;
} /// <summary>
/// Called when a purchase fails.
/// </summary>
public void OnPurchaseFailed(Product item, PurchaseFailureReason r)
{
} public void OnPurchaseClicked(string productId)
{
controller.InitiatePurchase(productId);
}
}

然后保存回到场景中点击IAP按钮,拖动拥有这段代码的GameObject到Button上选择刚才的方法作为点击事件,然后会有下图

 
 

画红线的地方写上咱们设置好的产品ID,然后我们可以看到这个按钮还附带了购买成功和购买失败的回调函数,跟添加Button点击事件一样,写好函数拖进去就可以了。最后一个地方就是,导包时,记得将bundle identifier设置成和你的app id一样,上图

 
 

在这里可以看ID

 
 

就是我画红框的地方,拷贝到unity里头,就可以进行真机测试了。真机测试需要注意几点:首先要登出你手机的app store账号,然后再进入游戏点击刚刚设置的IAP按键,就出弹出让你登录一个账号进行购买。这时你只需要登录刚刚我们在itunes connect中设置好的沙盒测试账号,然后就会出现下面这个画面

 
 

会提示说环境是沙盒环境,然后点击Buy就可以了,这时我们的内购接入就大功告成了!第一次写那么长的文章有点hold不住,如果有什么遗漏的可以留言,我会常来看看,我会的地方都会告诉大家,而且大家也可以看unity的官方文档,其实写的很详细,很小部分需要自己琢磨一下,反正我觉得,unity这个集成的相当好,操作起来简单很多。不用怕繁琐,遇到错误就各种搜索找解决方法,最后还是可以弄出来的!

小礼物走一走,来简书关注我

Unity苹果(iOS)内购接入(Unity内置IAP)的更多相关文章

  1. iOS:苹果内购实践

    iOS 苹果的内购 一.介绍 苹果规定,凡是虚拟的物品(例如:QQ音乐的乐币)进行交易时,都必须走苹果的内购通道,苹果要收取大约30%的抽成,所以不允许接入第三方的支付方式(微信.支付宝等),当然开发 ...

  2. iOS开发苹果内购的介绍与实现

    1.iOS开发苹果内购的介绍 1.1 介绍 苹果规定,凡是虚拟的物品(例如:QQ音乐的乐币)进行交易时,都必须走苹果的内购通道,苹果要收取大约30%的抽成,所以不允许接入第三方的支付方式(微信.支付宝 ...

  3. iOS开发支付篇-内购(IAP)

    一,前言 经典文章参考: . http://yimouleng.com/2015/12/17/ios-AppStore/ 内购流程 . http://www.jianshu.com/p/b199a46 ...

  4. iOS开发支付篇——内购(IAP)详解

    1 <em>内购所需要的资料整理总结,史上最完整的,哈哈哈哈哈哈</em> 思维导图 重点总结: 1 2 3 4 5 6 7 8 9 10 11 12 13 1.获取内购列表( ...

  5. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇02:内购如何实现》

    2.内购如何实现 内购概述: 游戏内购是指玩家在游戏中,用金钱获取游戏道具的一种方式.开发者从玩家内购之中获得开发游戏的收益,因此大量游戏都有内购模块.下面我们以在手机IOS平台实现跑酷游戏内购为例, ...

  6. Android逆向-Android基础逆向7(内购干货集合)

    本文作者:MSTLab-EvilChen 0×00 前言 首先,本来想写NDK的,但是还是先把这个流程过一遍吧,这个流程是必不可少的.其次,RMB真的是一个好东西. 导航 由于本人为了节省时间,不想贴 ...

  7. [Swift通天遁地]四、网络和线程-(15)程序内购功能

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  8. 体育类1.2.0版本 带有社交性质的 app 并且有内购功能

    上架经历 体育类1.2.0版本 应用是体育类的,带有社交性质的 app 并且有内购功能 - 关于内购 最初级的应该是内购的 产品类型 在开发者一开始设置的时候没有注意到区别: 消耗型产品 非消耗型 非 ...

  9. iOS: 实现苹果的内购

    一.介绍: 在个人开发的app上架到AppStore后,苹果官方允许我们将自己的app在appstore上进行付费使用,也就是所谓的内购.其中,支付方式规定的必须是苹果的支付方式:应用内支付. 二.流 ...

随机推荐

  1. IIS调用批处理权限的处理[转]

    最近公司希望将Windows 2003升级为Windows 2008,做完安全设置后发现.net调用批处理拒绝访问的情况.网上很多说更改应用程序池的权限,建议不需要修改该权限,我这里强烈建议使用默认的 ...

  2. Day2-Python基础2---字符编码与转码

    详细内容http://www.cnblogs.com/yuanchenqi/articles/5956943.html 一.编码介绍: 1.基本概念: 在python 2中默认编码是 ASCII,而在 ...

  3. SA读书笔记1

    SA的基本任务: 帐户: 为新用户增设帐号,将不再活动的帐号删除,帐号存活期事务(忘记密码等).把用户的主目录放在什么位置.在哪些机器上创建帐号. 硬件:识别并使用新硬件.对于虚拟化:设备可能要安装在 ...

  4. spring学习六

    1: @Valid 注解    @NotNull(message="名字不能为空") private String userName; @Max(value=120,message ...

  5. opengl版本和扩展

    检查自己的OpenGL版本 可以很容易的知道自己系统中的OpenGL版本,方法就是调用glGetString函数. const char* version = (const char*)glGetSt ...

  6. CentOS6.5 增加交换空间

    在CentOS 6.5安装Oracle 11g的时候,提示交换空间不足,百度来下,找到来增加交换空间的方法,特此记录一下 增加交换空间有两种方法: 严格的说,在系统安装完后只有一种方法可以增加swap ...

  7. PLM数据库迁移注意事项

    需求: PLM应用程序与数据库是存放在同一台服务器上,现需要将数据库迁移到数据库服务器10.10.1.10中. 10.10.1.10中安装了三个实例,MSSQLSERVER.MSSQLSERVER_P ...

  8. AndroidImageSlider(图片轮播控件)

    1,引入 dependencies { compile "com.android.support:support-v4:+" compile 'com.squareup.picas ...

  9. [poj3159]Candies(差分约束+链式前向星dijkstra模板)

    题意:n个人,m个信息,每行的信息是3个数字,A,B,C,表示B比A多出来的糖果不超过C个,问你,n号人最多比1号人多几个糖果 解题关键:差分约束系统转化为最短路,B-A>=C,建有向边即可,与 ...

  10. 大O表示法总结

    大O符号用于计算机科学来描述算法的性能或复杂性.Big O特别描述了最坏的情况,可以用算法来描述所需的执行时间或使用的空间(例如在内存或磁盘上). 任何读过Programming Pearls(编程珠 ...