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. 使用HibernateTemplate手写源生SQL的【增删改查】 操作

    使用 HibernateTemplate 进行持久化操作 执行的时候不报错,但数据库的持久化操作没有一点作用,问了好多人,说没有声明事务和提交事务, 用的是别人搭的的架构,事务已经有了,自动提交事务的 ...

  2. 全球知名的HTTPS网站检测工具-Qualys SSL Labs

    推荐一个在线版全球知名的HTTPS网站检测工具-Qualys SSL Labs.Qualys SSL Labs同时也是很具有影响力的SSL安全和性能研究机构. SSL Labs会对HTTPS网站的证书 ...

  3. 版本管理 word 文档比较

    1.因为公司还在用SVN, 2.而且 还在用word 写文档, 3.而且 commit log 基本不写, 所以导致,想了解word文档 改动, 很浪费时间!!!! 所以想 快速了解word 改动, ...

  4. Maven 创建动态web 3.0项目

    使用eclipse 创建Maven 项目时候 默认是2.3的,需要一些小技巧把他转换成3.0项目 操作步骤如下分四步, 1.创建一个simple maven project 2. 转换成web3.0项 ...

  5. paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控

    #!/usr/bin/python #-*- coding: UTF-8 -*- #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  6. C#引用类库时出现黄色三角加感叹号的处理

    C#引用类库时出现黄色三角加感叹号的处理方法 一个C#项目 在引用中有个引用项上有个黄色三角加感叹号 导致报错 类库的目标框架不一致,修改成一样就可以了. 选中类库右击属性:“目标框架”,修改成与引用 ...

  7. 类型:.net;问题:iis注册;结果:.net4.0注册到IIS ,重新注册IIS ,iis注册

    .net4.0注册到IIS ,重新注册IIS ,iis注册   IIS和.netfw4.0安装顺序是从前到后,如果不小心颠倒了,无所谓. 打开程序-运行-cmd:输入一下命令重新注册IIS C:\WI ...

  8. 如何利用MATLAB并行计算缩短程序运行时间

    本来CPU就是双核,不过以前一直注重算法,没注意并行计算的问题.今天为了在8核的dell服务器上跑程序才专门看了一下.本身写的程序就很容易实现并行化,因为beamline之间并没有考虑相互作用.等于可 ...

  9. easyui中 combogrid控件的loadData方法加载本地数据

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. dp-最小点对问题

    dp-最小点对问题 //最小点对问题 //采用分治思想,先分成两个子集分别求出最短距离d //再对两个子集进行合并,在一个dx2d的矩形中,最多可能有6个点距离小于d //按y排序,当x增长时求出这6 ...