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. WebDriver测试web中遇到的弹出框或不确定的页面

    我自己是用try catch解决的,不知道其他人的解决方法?如有,可以留言

  2. Python使用SMTP模块、email模块发送邮件

    一.smtplib模块: 主要通过SMTP类与邮件系统进行交互.使用方法如下: 1.实例化一个SMTP对象: s = smtplib.SMTP(邮件服务地址,端口号) s = smtplib.SMTP ...

  3. struts2中常用constant命令配置

    struts.objectFactory这个属性用 于说明Struts2的 对象池创建工厂,Struts2也有自己的对象池,就像Spring那样,在配置文件中你可以引用对象池中的对象,你可以借助于Sp ...

  4. 想开发VR游戏?你需要注意这些东西

    转自:http://www.gamelook.com.cn/2016/03/246620 开发VR游戏很难吗?有些人会说是,但在HTC虚拟现实新科技部门副总经理鲍永哲看来,VR游戏的门槛并不比一般的游 ...

  5. 基于opencv+ffmpeg的镜头分割

    镜头分割常常被用于视频智能剪辑.视频关键帧提取等场景. 本文给出一种解决镜头分割问题的思路,可分为两个步骤: 1.根据镜头分割算法对视频进行分割标记 核心在于镜头分割算法,这里简单描述一种算法思路:r ...

  6. Rails中render和redirect_to的区别

    共同点: render 和redirect_to 都是执行页面跳转,但是,写在这两个方法后面的语句仍然会被执行. 不同: render:简单的页面渲染,可以指定渲染的页面或布局文件,但是不会发出请求, ...

  7. vue日常练习一

    <html lang="en"> <head> <meta charset="UTF-8"> <title>Ti ...

  8. C# Remoting 简单实现

    此处下载源代码(VS2010编译通过)   http://files.cnblogs.com/files/qqhfeng/%E8%BF%9C%E7%A8%8B%E8%B0%83%E7%94%A8%E6 ...

  9. JAVA基础知识总结14(String、StringBuffer、StringBuilder)

    1.String字符串: java中用String类进行描述.对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. 如何定义字符串对象呢? ...

  10. maven安装第三方jar包到本地仓库

    添加项目依赖的时候,有些jar下载不下来,只有手动下载或安装到本地仓库了 首先下载所需要的jar,放到指定的文件夹 然后执行如下命令: mvn install:install-file -Dfile= ...