总结:绘上一张Kakfa架构思维大纲脑图(xmind)
其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?
若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理
梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。
-
Kafka入门
-
为什么选择Kafka
-
Kafka的安装、管理和配置
-
Kafka的集群
-
第一个Kafka程序
-
Kafka的生产者
-
Kafka的消费者
-
深入理解Kafka
-
可靠的数据传递
-
Spring和Kafka的整合
-
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
Unity 之 接入IOS内购过程解析
前言
看完此文章你可以了解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 示例源码
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Purchasing;
/// <summary>
/// IAP管理类
/// </summary>
public class IAPManager : MonoBehaviour, IStoreListener
{
/// <summary>
/// 需要换成对应游戏后台的key
/// </summary>
private string[] goodsList = new string[]
{
"com.czhenya.gold.1",
"com.czhenya.gold.2",
"com.czhenya.gold.3"
};
// 控制器
private IStoreController controller;
// 苹果扩展
private IAppleExtensions appleExtensions;
// 谷歌商店扩展
private IGooglePlayStoreExtensions googlePlayStoreExtensions;
// 是否可以发起购买
private bool isCanOnClickBubBtn = false;
void Start()
{
Init();
}
/// <summary>
/// 初始化
/// </summary>
private void Init()
{
// 没有网络,IAP会一直初始化
if (Application.internetReachability == NetworkReachability.NotReachable)
{
Debug.Log("----- 用户没有连接网络 IAP不可用 ------");
}
var module = StandardPurchasingModule.Instance();
ConfigurationBuilder builder = ConfigurationBuilder.Instance(module);
// builder.AddProduct("商品id1", ProductType.Consumable);
// ProductType :和后台说明对应
// consumable:可消费的,如游戏中的金币,用完还可以再购买。
// non-consumable:不可销毁的,一次购买,永久生效。比如去广告,解锁游戏关卡,这种商品只能购买一次。
// subscription:订阅的,这种一般用于新闻、杂志、或者app里面的月卡。可以按月或者按年收费。
for (int i = 0; i < goodsList.Length; i++)
{
builder.AddProduct(goodsList[i], ProductType.Consumable);
}
// 开始初始化
UnityPurchasing.Initialize(this, builder);
}
/// <summary>
/// 初始化成功 -- 接口函数
/// </summary>
/// <param name="controller"></param>
/// <param name="extensions"></param>
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
Debug.Log("【Unity IAP】初始化成功 IAP initialize success");
isCanOnClickBubBtn = true;
this.controller = controller;
// 回调赋值
this.appleExtensions = extensions.GetExtension<IAppleExtensions>();
this.googlePlayStoreExtensions = extensions.GetExtension<IGooglePlayStoreExtensions>();
//登记 购买延迟 监听器
appleExtensions.RegisterPurchaseDeferredListener(OnDeferred);
}
//购买延迟提示
private void OnDeferred(Product item)
{
Debug.Log("【Unity IAP】 网速慢.................");
}
/// <summary>
/// 初始化失败回调 -- 接口函数
/// </summary>
/// <param name="error"></param>
public void OnInitializeFailed(InitializationFailureReason error)
{
Debug.LogError("【Unity IAP】初始化失败 OnInitializeFailed, reason:" + error.ToString());
}
/// <summary>
/// 购买失败回调 -- 接口函数
/// </summary>
/// <param name="i"></param>
/// <param name="p"></param>
public void OnPurchaseFailed(Product i, PurchaseFailureReason p)
{
Debug.LogError("【Unity IAP】购买失败 OnPurchaseFailed,reason:" + p.ToString());
if (this.onPurchaseFailed != null)
{
this.onPurchaseFailed();
this.onPurchaseFailed = null;
}
}
/// <summary>
/// 购买成功回调 -- 接口函数
/// </summary>
/// <param name="e"></param>
/// <returns></returns>
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs e)
{
Debug.LogError("【Unity IAP】购买过程 purchase finished, apple return receipt:" + e.purchasedProduct.receipt);
if (this.onPurchaseSuccess != null)
{
this.onPurchaseSuccess(e.purchasedProduct.receipt);
this.onPurchaseSuccess = null;
}
return PurchaseProcessingResult.Complete;
}
/// <summary>
/// 支付失败回调
/// </summary>
# 文末
我将这三次阿里面试的题目全部分专题整理出来,并附带上详细的答案解析,生成了一份**PDF文档**
* **第一个要分享给大家的就是算法和数据结构**
![网易严选Java开发三面面经:HashMap+JVM+索引+消息队列](https://img-blog.csdnimg.cn/img_convert/919323dd49fd77aa1b88e0071cd77a15.webp?x-oss-process=image/format,png)
* **第二个就是数据库的高频知识点与性能优化**
![网易严选Java开发三面面经:HashMap+JVM+索引+消息队列](https://img-blog.csdnimg.cn/img_convert/bd7194d7a718dbe1e113131a6eb18cfe.webp?x-oss-process=image/format,png)
* **第三个则是并发编程(72个知识点学习)**
![网易严选Java开发三面面经:HashMap+JVM+索引+消息队列](https://img-blog.csdnimg.cn/img_convert/72c4e5a36cc3d8c71d14f4b3640cfd52.webp?x-oss-process=image/format,png)
* **最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料**
![网易严选Java开发三面面经:HashMap+JVM+索引+消息队列](https://img-blog.csdnimg.cn/img_convert/eb31d3f19e2f51b3d0c63bff6cacd912.webp?x-oss-process=image/format,png)
还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
点学习)**
[外链图片转存中...(img-JXCQPrXJ-1715415248622)]
* **最后一个是各大JAVA架构专题的面试点+解析+我的一些学习的书籍资料**
[外链图片转存中...(img-ZMgKWH0v-1715415248622)]
还有更多的Redis、MySQL、JVM、Kafka、微服务、Spring全家桶等学习笔记这里就不一一列举出来
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**