原帖:真正手把手教你用unity接入苹果内购(IAP)
http://www.manew.com/thread-100403-1-1.html

(出处: -【游戏蛮牛】-ar增强现实,虚拟现实,unity3d,unity3d教程下载首选u3d,unity3d官网)

前言:由于项目需要我接入苹果内购,但是我之前并没有接过任何SDK的经验,我是菜鸟一枚你懂得。所以只能各方求助、网上搜寻,谷歌百度能搜索就搜索。然后折腾3天,中间有点小插曲不然会更快,最后还是如愿弄出来啦。咱们还是记录一下,权当复习复习,而且网上的教程比较有点年头,有些比较复杂,正好我来发个简单点的方式~好像是 unity5 .3还是多少之后就集成了很多平台的内购,反正我用的是5.4.1,所以我们现在结这些内购接口还是很方便的!详情可以看看unity提供的官网文档

所有这一切的 前提 是你需要有一个苹果开发者账号,一年99美元。当然你如果需要可以先收藏我的教程哈哈哈哈哈~过程不确定会不会有什么遗漏,因为东西有点多,我会注意检查的,开始吧!

犀利的人可以自行看着unity的官方文档,也可以捣鼓出来!https://docs. unity3d .com/Manual/UnityIAPAppleConfiguration.html
---------------------------------------------------------华丽的分割线-----------------------------------------------------------------

1.首先第一步我们需要登录到苹果开发者的中心进行我们的APP注册 网址:https://developer.apple.com/ 点击右上角的Account

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

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

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

Note:首先第一个红框是你APP的名字,你自己决定吧~第二个红框可以稍微正式点,一般我们都会写com.公司名.app名字 这样的组合比较有点样子,这个ID后面要用到的哦 !
然后下面的按默认的也可以,看实际情况调整~然后弄完之后点最下面的Continue继续后面的操作我就不截图了~注册完回到App ids页面就可以看到你的刚刚注册的app信息啦。
恭喜完成第一步~
4.然后我们打开Itunes connect ,https://itunesconnect.apple.com/,登录你的开发者账号进入下面的界面

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

然后点击左上角的“+”号然后点击新建APP
 
红框圈起来的部分就是你刚刚在开发者中心注册时你写的App ids,点击一下就会出现你刚刚注册的id,把剩下的资料填填就可以创建了。
5.然后就会进到这
 
涉及到公司 问题 所以资料就打上马赛克了~然后这里开始就设置你的内购产品了,根据上面的发的帖子链接走就可以了。设置完成之后呢点击这里的1.0准备提交进入到app信息设置的界面,然后往下拉,找到下面这图的地方

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

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

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

点击红色框的按钮,这里我已经导入了,所以是Update,没导入是Import,点击之后稍等片刻,等他导入完成就好了。
9.然后我们看到官方文档https://docs.unity3d.com/ScriptReference/Purchasing.UnityPurchasing.Initialize.html 教你如何初始化

[C#] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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了,选中他~就可以了。然后我们继续敲代码
10.打开刚刚我们创建的代码,继续添加一段代码,给按钮作为点击事件

[AppleScript] 纯文本查看 复制代码
?
1
2
3
public void OnPurchaseClicked(string productId)
   {
       controller.InitiatePurchase(productId);
   }

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

[AppleScript] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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点击事件一样,写好函数拖进去就可以了~11.最后一个地方就是,导包时,记得将bundle identifier设置成和你的app id一样,上图!
 
在这里可以看ID:

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

会提示说环境是沙盒环境,然后点击Buy就可以啦,这时我们的内购接入就大功告成了!

真正手把手教你用unity接入苹果内购(IAP)相关推荐

  1. Unity接入苹果内购(IAP)

    Unity接入苹果内购(IAP) 前言 苹果支付流程 配置App 配置商品 协议.税务和银行业务 沙盒测试账号 Unity(IAP) 测试 前言 第一次发帖,有点激动嘿嘿!话不多说直接奔主题,项目中需 ...

  2. Unity接入苹果内购

    文章目录 前言 一.苹果内购是什么? 二.Unity接入内购 1.开启内购 2.使用内购 总结 前言 Unity接入苹果内购前,需要提前配置好产品的内购ID以及拥有苹果账号,关于这个提前准备各位需要自 ...

  3. 苹果内购IAP记录-1

    这段时间做了苹果内购IAP,做一个整理记录,主要是开发层面. 一.前期工作:在开发者账号中添加银行信息同意协议等,添加沙盒账号,添加内购商品 二.项目开发,因为项目需要支持iOS15一下的版本所以使用 ...

  4. Unity接入iOS内购

    1.内购种类 consumable:可消费的,如游戏中的金币,用完还可以再购买. non-consumable:不可销毁的,一次购买,永久生效.比如去广告,解锁游戏关卡,这种商品只能购买一次. sub ...

  5. Unity接入三星内购

    文章目录 前言 一.SDK下载 二.接入步骤 1.导入SDK 2.请求商业卖家状态 3.注册应用程序 4.添加应用内商品 5.添加测试用户 总结 前言 因公司需要,接入三星内购,Unity是支持三星商 ...

  6. 苹果内购IAP记录-2 StoreKit新版

    苹果内购新版的StoreKit2只支持iOS15以上,新的nsync同步接口,简单的使用如下: @available(iOS 15.0, *) public class MXLiveIAPStoreV ...

  7. Unity接入GooglePlay内购V4(源生Android方式)

    Unity接GooglePlay In-App Billing坑还是蛮多的,各种坑. 接的方式目前来看有三种: 采用Unity IAP插件,开启Unity的IAP Service 采用Android源 ...

  8. Unity接入OneStore内购

    前言 OneStore是韩国第一大android应用市场,访问官网可能需要你科学上网才能正常访问. [中文]OneStore开发工具 [中文]在Unity中使用ONE store In-App支付 国 ...

  9. 苹果内购IAP流程(转载)

    一.In App Purchase概览 Store Kit代表App和App Store之间进行通信.程序将从App Store接收那些你想要提供的产品的信息,并将它们显示出来供用户购买. 当用户需要 ...

最新文章

  1. plotly基于dataframe数据绘制线形图(line plot)
  2. javascript2008
  3. php : RBAC 基于角色的用户权限控制-表参考
  4. SAP ABAP Netweaver Note download debug
  5. SVN Error: Can‘t connect to host xxxxx‘: 由于目标计算机积极拒绝,无法连接,的最快解决办法
  6. ASP.NET中使用非托管DLL
  7. vue 集成 sweetalert2 前端校验
  8. 投稿过程要不要考虑预印本?——medRxiv那些事
  9. 三国演义告诉我们的60个道理
  10. abb机器人伺服电机报闸是什么_ABB机器人电池更换时回零程序Reference
  11. 美国知名天使投资人列出愿意投资的30大创意方向
  12. [论文阅读] Cost-Effective Active Learning for Deep Image Classification
  13. Spark 原理 —— 从 akka 到 spark 集群的启动
  14. linux搭建git服务
  15. VS code open in browser无法打开chrome浏览器的解决办法
  16. 视频直播本地测试服务器搭建
  17. python模拟预测孩子身高代码_C语言 已知父母身高预测孩子身高程序 求帮找错
  18. Google镜像搭建:利用 Cloudflare Workers 搭建访问谷歌镜像站点,可自行绑定域名
  19. python情人节之玫瑰花与表白方式_python情人节之玫瑰花与表白方式-Go语言中文社区...
  20. 《SPSS统计分析与行业应用实战》之ROC曲线案例

热门文章

  1. 【箱型图】如何看箱型图
  2. Leetcode 碎碎念
  3. 专科学计算机的学校哪个好,计算机专业大学排名专科生学计算机专业好吗
  4. C++语法——详细剖析多态与虚函数
  5. 与非营利朕亨基金会合作 Keybase将保密通讯软体结合加密货币
  6. 深度学习之学习笔记(九)—— 误差反向传播法
  7. cocoscreator 音频管理cc.audioEngine
  8. 计算机考研英语自我介绍范文,考研复试英语自我介绍范文
  9. (私人收藏)2019WER积木教育机器人赛(普及赛)解决方案-(全套)采集深度学习样本...
  10. pip3与pyttsx3文字语音转换