最新Unity 之 接入IOS内购过程分析【文末源码】_unity3d ios订阅,网络安全 ...

打印 上一主题 下一主题

主题 780|帖子 780|积分 2340

给大家的福利

零底子入门
对于从来没有打仗过网络安全的同学,我们帮你准备了具体的学习发展门路图。可以说是最科学最系统的学习门路,大家跟着这个大的方向学习准没题目。

同时每个发展门路对应的板块都有配套的视频提供:

因篇幅有限,仅展示部门资料
网上学习资料一大堆,但如果学到的知识不成体系,遇到题目时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提拔。
需要这份系统化资料的朋友,可以点击这里获取
一个人可以走的很快,但一群人才能走的更远!岂论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都接待加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习发展!
   看完此文章你可以了解IOS内购接入全过程,可以学习到Unity从零接入内购功能。别的此博文和文末源码没有涉及到掉单补单部门逻辑。
  需要准备



  • 一台mac系统呆板
  • 苹果开辟者账号
  • Unity2019.4.x (不同版本,3步调略有不同)
  • Xcode (我的版本12.5)
内购导图


一,效果展示



二,苹果后台

PS:若公司已有运营人员在后台操作过了,可以跳过此步调。注意测试机上还是需要登陆沙箱账号奥。
2.1 注册应用步伐


  • 起首打开苹果开辟者官网:https://developer.apple.com/
  • 点击登陆并点“Account”,在Apple Developer Center中,导航到相应的标识符部门:


  • 添加新的 App ID 以创建与 Apple 的基本应用步伐实体。

    • 注意:使用显式应用步伐 ID。通配符应用 ID (com.example.*) 不能用于使用应用内购买的应用。
    • 注意:在开辟者中央创建 App ID 后,即可在 iTunes Connect 中使用它。



  • 导航到iTunes Connect并创建一个应用步伐,以与游戏创建市肆关系:


  • 使用新创建的 App ID 作为应用的 Bundle ID:

2.2 添加应用内购买


  • 选择功能并使用加号 (“+”) 按钮添加新的应用内购买:

  • 选择产品类型:


  • 指定产品标识符,并根据要求填写其他字段。


  • 注意:此处的“产品 ID”与游戏源代码中使用的标识符雷同,通过AddProduct()或AddProducts()添加到Unity IAP ConfigurationBuilder实例。

2.3 测试IAP


  • 使用iTunes Connect创建沙盒测试器以在您的测试装备的iTunes帐户上使用。为此,请导航至iTunes Connect > Users and Roles,然后选择加号 (“+”) 按钮。
PS:详情可查看Apple的Sandbox Tester文档,。



  • Xcode项目配置
    Xcode 项目中Bundle Identitifier和Team与 iTunes Connect 中使用的一致
    PS:Unity中的包名也应该保持一致


  • 在测试装备登陆沙箱测试账号


三,下载IAP包

3.1 下载Package

打开Windows -> Package Manager 下载 In App Purchasing

3.2 打开Srever配置


  • 打开服务窗口,在服务窗口中查找和启用应用内购买

  • 选择项目ID(当前登录的账号)

  • 启用In-APP Purchasing (有的时候切换慢,需要等一会)

  • 答复题目
    问:这款应用重要面向13岁以下的儿童(是就勾选,不是不勾选)

  • 有个报错
    我没有办理也没有影响,需要办理的话按照下面的提示操作一下


四,代码逻辑

4.1 逻辑分析


  • 实现IStoreListener接口,接口提供四个回调函数,分别是初始化成功、失败,购买成功、失败;
  • 编写初始化逻辑,美满初始化成功、失败回调接口函数;
  • 编写调用购买逻辑,美满购买成功、失败回调接口函数;
  • 现实开辟中需要限制,购买按钮只被点击一次。
代码结构就是如许了,具体解释代码注释已经写得很清楚了,这里不再赘述。
使用时将代码挂载加入景即可进行初始化,然后创建Button监听代码中的OnClickPurchase方法即可打包测试。
PS:注意需要将goodsList数组中的key换成你后台申请的
4.2 示例源码

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.Purchasing;
  6. /// <summary>
  7. /// IAP管理类
  8. /// </summary>
  9. public class IAPManager : MonoBehaviour, IStoreListener
  10. {
  11.     /// <summary>
  12.     /// 需要换成对应游戏后台的key
  13.     /// </summary>
  14.     private string[] goodsList = new string[]
  15.     {
  16.         "com.czhenya.gold.1",
  17.         "com.czhenya.gold.2",
  18.         "com.czhenya.gold.3"
  19.     };
  20.     // 控制器
  21.     private IStoreController controller;
  22.     // 苹果扩展
  23.     private IAppleExtensions appleExtensions;
  24.     // 谷歌商店扩展
  25.     private IGooglePlayStoreExtensions googlePlayStoreExtensions;
  26.     // 是否可以发起购买
  27.     private bool isCanOnClickBubBtn = false;
  28.     void Start()
  29.     {
  30.         Init();
  31.     }
  32.     /// <summary>
  33.     /// 初始化
  34.     /// </summary>
  35.     private void Init()
  36.     {
  37.         // 没有网络,IAP会一直初始化
  38.         if (Application.internetReachability == NetworkReachability.NotReachable)
  39.         {
  40.             Debug.Log("----- 用户没有连接网络 IAP不可用 ------");
  41.         }
  42.         var module = StandardPurchasingModule.Instance();
  43.         ConfigurationBuilder builder = ConfigurationBuilder.Instance(module);
  44.         // builder.AddProduct("商品id1", ProductType.Consumable);
  45.         // ProductType :和后台说明对应
  46.         // consumable:可消费的,如游戏中的金币,用完还可以再购买。
  47.         // non-consumable:不可销毁的,一次购买,永久生效。比如去广告,解锁游戏关卡,这种商品只能购买一次。
  48.         // subscription:订阅的,这种一般用于新闻、杂志、或者app里面的月卡。可以按月或者按年收费。
  49.         for (int i = 0; i < goodsList.Length; i++)
  50.         {
  51.             builder.AddProduct(goodsList[i], ProductType.Consumable);
  52.         }
  53.         // 开始初始化
  54.         UnityPurchasing.Initialize(this, builder);
  55.     }
  56.     /// <summary>
  57.     /// 初始化成功 -- 接口函数
  58.     /// </summary>
  59.     /// <param name="controller"></param>
  60.     /// <param name="extensions"></param>
  61.     public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
  62.     {
  63.         Debug.Log("【Unity IAP】初始化成功 IAP initialize success");
  64.         isCanOnClickBubBtn = true;
  65.         this.controller = controller;
  66.         // 回调赋值
  67.         this.appleExtensions = extensions.GetExtension<IAppleExtensions>();
  68.         this.googlePlayStoreExtensions = extensions.GetExtension<IGooglePlayStoreExtensions>();
  69.         //登记 购买延迟 监听器
  70.         appleExtensions.RegisterPurchaseDeferredListener(OnDeferred);
  71.     }
  72.     //购买延迟提示
  73.     private void OnDeferred(Product item)
  74.     {
  75.         Debug.Log("【Unity IAP】 网速慢.................");
  76.     }
  77.     /// <summary>
  78.     /// 初始化失败回调 -- 接口函数
  79.     /// </summary>
  80.     /// <param name="error"></param>
  81.     public void OnInitializeFailed(InitializationFailureReason error)
  82.     {
  83.         Debug.LogError("【Unity IAP】初始化失败 OnInitializeFailed, reason:" + error.ToString());
  84.     }
  85.     /// <summary>
  86.     /// 购买失败回调 -- 接口函数
  87.     /// </summary>
  88.     /// <param name="i"></param>
  89.     /// <param name="p"></param>
  90.     public void OnPurchaseFailed(Product i, PurchaseFailureReason p)
  91.     {
  92.         Debug.LogError("【Unity IAP】购买失败 OnPurchaseFailed,reason:" + p.ToString());
  93.         if (this.onPurchaseFailed != null)
  94.         {
  95.             this.onPurchaseFailed();
  96.             this.onPurchaseFailed = null;
  97.         }
  98.     }
  99.     /// <summary>
  100.     /// 购买成功回调 -- 接口函数
  101.     /// </summary>
  102.     /// <param name="e"></param>
  103.     /// <returns></returns>
  104.     public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
  105.     {
  106.         Debug.LogError("【Unity IAP】购买过程 purchase finished, apple return receipt:" + e.purchasedProduct.receipt);
  107.         if (this.onPurchaseSuccess != null)
  108.         {
  109.             this.onPurchaseSuccess(e.purchasedProduct.receipt);
  110.             this.onPurchaseSuccess = null;
  111.         }
  112.         return PurchaseProcessingResult.Complete;
  113.     }
  114.     /// <summary>
  115.     /// 支付失败回调
  116.     /// </summary>
  117.     private Action onPurchaseFailed;
  118.     /// <summary>
  119.     /// 支付成功回调
  120.     /// </summary>
  121.     private Action<string> onPurchaseSuccess;
  122.     /// <summary>
  123.     /// 购买产品
  124.     /// </summary>
  125.     /// <param name="productId">产品ID</param>
  126.     /// <param name="onFailed">失败回调</param>
  127.     /// <param name="onSuccess">成功回调</param>
  128.     public void PurchaseProduct(string productId, Action onFailed, Action<string> onSuccess)
  129.     {
  130.         this.onPurchaseFailed = onFailed;
  131.         this.onPurchaseSuccess = onSuccess;
  132.         if (controller != null)
  133.         {
  134.             var product = controller.products.WithID(productId);
  135.             if (product != null && product.availableToPurchase)
  136.             {
  137.                 Debug.Log("【Unity IAP】开始购买");
  138.                 controller.InitiatePurchase(productId);
  139.             }
  140.             else
  141.             {
  142.                 Debug.LogError("【Unity IAP】失败回调 no product with productId:" + productId);
  143.                 if (this.onPurchaseFailed != null)
  144.                 {
  145.                     this.onPurchaseFailed();
  146.                 }
  147. ### 如何自学黑客&网络安全
  148. #### 黑客零基础入门学习路线&规划
  149. **初级黑客**  
  150. **1、网络安全理论知识(2天)**  
  151. ①了解行业相关背景,前景,确定发展方向。  
  152. ②学习网络安全相关法律法规。  
  153. ③网络安全运营的概念。  
  154. ④等保简介、等保规定、流程和规范。(非常重要)
  155. **2、渗透测试基础(一周)**  
  156. ①渗透测试的流程、分类、标准  
  157. ②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking  
  158. ③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察  
  159. ④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
  160. **3、操作系统基础(一周)**  
  161. ①Windows系统常见功能和命令  
  162. ②Kali Linux系统常见功能和命令  
  163. ③操作系统安全(系统入侵排查/系统加固基础)
  164. **4、计算机网络基础(一周)**  
  165. ①计算机网络基础、协议和架构  
  166. ②网络通信原理、OSI模型、数据转发流程  
  167. ③常见协议解析(HTTP、TCP/IP、ARP等)  
  168. ④网络攻击技术与网络安全防御技术  
  169. ⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
  170. **5、数据库基础操作(2天)**  
  171. ①数据库基础  
  172. ②SQL语言基础  
  173. ③数据库安全加固
  174. **6、Web渗透(1周)**  
  175. ①HTML、CSS和JavaScript简介  
  176. ②OWASP Top10  
  177. ③Web漏洞扫描工具  
  178. ④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)  
  179. 恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
  180. 到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
  181. 如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!
  182. **7、脚本编程(初级/中级/高级)**  
  183. 在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
  184. 如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。
  185. **8、超级黑客**  
  186. 这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。  
  187. ![img](https://img-blog.csdnimg.cn/img_convert/3fd39c2ba8ec22649979f245f4221608.webp?x-oss-process=image/format,png)
  188. #### 网络安全工程师企业级学习路线
  189. ![img](https://img-blog.csdnimg.cn/img_convert/931ac5ac21a22d230645ccf767358997.webp?x-oss-process=image/format,png)  
  190. 如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的
  191. 视频配套资料&国内外网安书籍、文档&工具
  192. 当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
  193. ![img](https://img-blog.csdnimg.cn/img_convert/153b2778a3fe5198265bed9635d63469.webp?x-oss-process=image/format,png)  
  194. 一些笔者自己买的、其他平台白嫖不到的视频教程。  
  195. ![img](https://img-blog.csdnimg.cn/img_convert/32eb4b22aa740233c5198d3c161b37e8.webp?x-oss-process=image/format,png)
  196. **网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
  197. **[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**
  198. **一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

农妇山泉一亩田

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表