> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# PlayFab 2017 年发行说明

> PlayFab 2017 年的发行说明。

## 171204

日期：2017 年 12 月 4 日

### Unreal SDK 变更（Cpp 和 Bp）

* 已将两个 SDK 更新到 **Unreal 4.18.1**。
* 旧版本仍然可用，但需要在 \_.build.cs 文件中取消注释 `#defines`。

## 171127

日期：2017 年 11 月 27 日

### API 变更

* 允许“限量版”物品的库存功能现已脱离 Beta 版正式发布。

* 此功能让你可以规定游戏中某个特定 `itemId` 只有固定数量可用。

* 从使用“[ProfileModel](xref:titleid.playfabapi.com.client.accountmanagement.getplayerprofile#playerprofilemodel)”的 API 方法中删除了一个虚拟货币属性，因为该信息从未提供过，也从未正确过。它总有一天会回来的。

### 新增 API 方法

* admin.[CheckLimitedEditionItemAvailability](xref:titleid.playfabapi.com.admin.playeritemmanagement.checklimitededitionitemavailability)
* admin.[IncrementLimitedEditionItemAvailability](xref:titleid.playfabapi.com.admin.playeritemmanagement.incrementlimitededitionitemavailability)
* client.[GetPaymentToken](xref:titleid.playfabapi.com.client.playeritemmanagement.getpaymenttoken)
  * 用于 [XSolla 特定的付款处理](https://docs.xbox.com/zh-CN/services/playfab/economy-monetization/economy/tutorials/non-receipt-payment-processing.md)
* client.[ReportDeviceInfo](xref:titleid.playfabapi.com.client.analytics.reportdeviceinfo)
  * 此 API 方法不应直接调用。它目前是 Unity 和 Lumberyard SDK 的内置功能。可以使用 [API 策略](https://docs.xbox.com/zh-CN/services/playfab/api-references/api-access-policy.md)将其禁用。此外，我们很快会添加另一个选项，以便在 Game Manager 的游戏设置页面中禁用它。

### 更新的 API 方法错误代码

* client.[AddOrUpdateContactEmail](xref:titleid.playfabapi.com.client.accountmanagement.addorupdatecontactemail)
* client.[GetLeaderboardAroundPlayer](xref:titleid.playfabapi.com.client.playerdatamanagement.getleaderboardaroundplayer)
* client.[LoginWithAndroidDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithandroiddeviceid)
* client.[LoginWithCustomID](xref:titleid.playfabapi.com.client.authentication.loginwithcustomid)
* client.[LoginWithIOSDeviceID](xref:titleid.playfabapi.com.client.authentication.loginwithiosdeviceid)

### SDK 特定更新

* [UnitySdk](https://github.com/PlayFab/UnitySDK)：我们现在使用 Unity 2017.2.0f3 生成所有已发布的 Unity 包文件。
* 为了进行测试，我们在内部将每个主.次版本更新到了最新版本，范围从 Unity 4.7.2f1 到 2017.1.2f1。
* Unity 示例测试游戏服务器：对 `HttpHelper` 应用了修复，以修复 `SignalR` 请求的 SSL 验证问题。
* [ActionScriptSDK](https://github.com/PlayFab/ActionScriptSDK)：示例中的 AirSdk 已更新到 v27。
* [Cocos2d-xSDK](https://github.com/PlayFab/Cocos2d-xSDK)：尽管 Cocos 已发布 3.16，我们仍以 3.15.1 为目标（敬请关注）。
* SdkTestingCloudScript 和 [NodeSDK](https://github.com/PlayFab/NodeSDK)：更新了示例 VS 项目，以支持 VS/msbuild 2017。
* WindowsSDK：这是面向 Visual Studio 2013 的 NuGet 包的最后一个版本：
  * [WindowsSdk VS 2013 NuGet 包](https://www.NuGet.org/packages/com.playfab.windowssdk.v120/1.19.171127)
  * 我们正在更新自动生成计算机，并且不会在新计算机上安装 VS 2013。
  * [较新的 NuGet 包](https://www.NuGet.org/packages/com.playfab.windowssdk.v140/)将继续在 VS 2015 和 2017 上工作。

## 171106

日期：2017 年 11 月 6 日

### 新增 API 方法

* admin.[GetPlayerProfile](xref:titleid.playfabapi.com.admin.accountmanagement.getplayerprofile)
* server.[SendEmailFromTemplate](xref:titleid.playfabapi.com.server.accountmanagement.sendemailfromtemplate)

### 更新的 PlayStream 事件

* [sent\_email](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/TitleCommunications/sent-email.md) 新增了字段：Body 和 Subject。

### 所有 SDK

* **次要 SDK 中断性变更：** `ForgetClientCredentials()` 已重命名为 `ForgetAllCredentials()`。
* 这是一项“即将推出”功能的一部分，该功能完成后将发布公告。

## 171102

日期：2017 年 11 月 2 日

### 新增 PlayFab 功能

* 使用模板向玩家发送电子邮件。

### 新增 API 方法

* admin.[ResetPassword](xref:titleid.playfabapi.com.admin.accountmanagement.resetpassword)
* admin.[GetPlayerIdFromAuthToken](xref:titleid.playfabapi.com.admin.accountmanagement.getplayeridfromauthtoken)
* client.[AddOrUpdateContactEmail](xref:titleid.playfabapi.com.client.accountmanagement.addorupdatecontactemail)
* client.[RemoveContactEmail](xref:titleid.playfabapi.com.client.accountmanagement.removecontactemail)
* server.[SendCustomAccountRecoveryEmail](xref:titleid.playfabapi.com.server.accountmanagement.sendcustomaccountrecoveryemail)

### 文档更新

* [与每个 PlayFab API 调用相关的新错误代码列表](https://docs.xbox.com/zh-CN/services/playfab/api-references/global-api-method-error-codes.md)
* 更新了以下方法的错误代码：client.[LoginWithGoogleAccount](xref:titleid.playfabapi.com.client.authentication.loginwithgoogleaccount)、client.[UpdatePlayerStatistics](xref:titleid.playfabapi.com.client.playerdatamanagement.updateplayerstatistics)、server.[ConsumeItem](xref:titleid.playfabapi.com.server.playeritemmanagement.consumeitem)

### 新增 PlayStream 事件

* [auth\_token\_validated](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/auth-token-validated.md)
* [player\_updated\_contact\_email](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/player-updated-contact-email.md)
* [sent\_email](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/TitleCommunications/sent-email.md)

### Unreal 特定更新

* 我们的自动生成程序未能发布内部版本号 171016 和 171026 的 Unreal SDK。我们解决了自动生成程序的问题，事后发布了版本 171026，并且发布已恢复正常

### Unity 特定变更

* **次要中断性变更：** 已将 `ForgetClientCredentials` 重命名为 `ForgetAllCredentials`。
* 这是即将推出的新功能的一部分。在接下来的几个版本中，我们会在所有 SDK 中将 `ForgetClientCredentials` 重命名为 `ForgetAllCredentials`。

## 171026

日期：2017 年 10 月 26 日

### API 文档变更

* 正在更新 API 方法的错误代码。

* 从每个 API 方法的列表中删除了许多对所有 API 方法通用的错误代码。新页面介绍了通用错误代码。

* **删除的通用代码：**
  * InvalidParams
  * OverLimit
  * DataUpdateRateExceeded
  * AccountBanned

* 这些错误（以及将在单独文档中发布的其他错误）可能由任何 API 方法返回，应进行适当处理。

* 向数十个 API 方法添加了新的错误代码，并删除了一些错误的代码。对于特定于方法的错误返回，错误代码列表应该会准确得多。这仍是一个持续进行的过程，因此还会有更多更新。

* 一些涉及虚拟货币的 API 方法可能会将余额减少到零以下。我们已对这些方法进行了相应标注。

### API 变更

* **新增 API 方法：**
  * admin.[DeleteTitle](xref:titleid.playfabapi.com.admin.accountmanagement.deletetitle)
  * 托管游戏服务器同时支持 **IPv4** 和 **IPv6**。
  * 自定义游戏服务器现在支持 **IPV6**。所有新启动的游戏服务器实例都会同时分配 **IPV4** 和 **IPV6** 地址，这些地址显示在 Game Manager 的 **Servers** 选项卡中，并由匹配 API 返回。客户端可以连接到所分配服务器的 **IPV4** 或 **IPV6** 地址。
  * 所有返回服务器地址的 API 方法现在都会返回这两个选项：client.[StartGame](xref:titleid.playfabapi.com.client.matchmaking).[StartGameResult](xref:titleid.playfabapi.com.client.matchmaking)

### Game Manager 变更

* 现在可以使用新的 Admin/DeleteTitle API 或在 Game Manager 的工作室页面上删除游戏，如下图所示。

  ![DelTitleGameManager](https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/release-notes/images/171026-DelTitleGameManager.png?fit=max\&auto=format\&n=N3T1ucKV7zIMBudj\&q=85\&s=e05b5b1b05161e4730923e705349b890)

## 171016

日期：2017 年 10 月 16 日

### API 变更

* 向 server.[SendPushNotification](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification).[SendPushNotificationRequest](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification#sendpushnotificationrequest).[PushNotificationPackage](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification#pushnotificationpackage) 添加了一个用于 iOS 角标的参数。
* 阐明了各种参数特定于设备的性质。

### 新增 PlayStream 事件

* [player\_started\_purchase](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/Player/player-started-purchase.md)
* [player\_paid\_for\_purchase](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/Player/player-paid-for-purchase.md)

### JavaScriptSDK 特定变更

* [JavaScriptSDK](https://github.com/PlayFab/JavaScriptSDK)
  * 我们的 SDK 现在与 [Phaser.io](https://phaser.io/) 集成。

### LuaSDK 特定变更

* [LuaSDK](https://github.com/PlayFab/LuaSDK)
  * 修复了我们的 Lua 发布管道，LuaSDK 再次正常更新。

### UnitySdk 特定变更

* [UnitySdk](https://github.com/PlayFab/UnitySDK)
  * 我们在自己这边处理了 [Unity 中的回归问题](https://issuetracker.unity3d.com/issues/unitywebrequest-getresponseheaders-method-returns-null-on-android-devices)，它应该不会再影响 PlayFab 客户。

~~**UnrealCppSdk 特定变更：**~~（更新：此 SDK 已弃用。有关新的 Unreal SDK，请参阅 [UnrealMarketplaceSDK](https://www.unrealengine.com/marketplace/playfab-SDK)）

* ~~我们的一位客户为我们的 SDK 制作了一个附加插件，该插件集成了 Unreal OnlineSubsystem 和 PlayFab SDK~~
* ~~你可以在[此处](https://gitlab.com/mtuska/OnlineSubsystemPlayFab)查看。~~&#x20;

### Unicorn Battle 示例

* 删除了 PlayFab 自定义推送插件，并更新为 FCM 推送消息。

## 170925

日期：2017 年 9 月 5 日

### API 变更

* 删除了少量从未公开的 Beta 版 API。这应该不会影响任何当前客户或已上线的游戏。
* 我们绕过了 CloudScript 引擎中默认的语言级标头检查。这意味着之前被拒绝的几个 CloudScript http.request() 标头现在应该可以使用了。

### 全局推送通知更新

* 有关推送通知改进的详细信息，请参阅[我们的博客](https://blog.playfab.com/blog/push-sep-17)

### 新增 PlayStream 事件

* [player\_device\_info](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/player-device-info.md)
* 使用最新 UnitySDK 的游戏现在可以查看有关其客户的一些基本分析数据。SnowFlake 非常适合查看和分析这些信息，但这些信息也可以在 PlayStream 事件历史记录中找到。
* player\_updated\_membership

### JavaScriptSDK 特定变更

* [JavaScriptSDK](https://github.com/PlayFab/JavaScriptSDK)
  * 向 JavaScriptSDK 添加了其他 SDK 中已有的一些小功能：
  * 现在可以向请求中注入额外的标头（这消除了此 SDK 支持双重加密登录的障碍之一）。
  * 添加了一个新函数：`PlayFabClientSDK.ForgetClientCredentials()`
  * 这是一个便捷函数，用于在关闭或注销后重置客户端。
  * `PlayFab.GenerateErrorReport()`
  * 这是一个便捷函数，可将失败的 PlayFab 调用的错误结果转换为对调用失败方式的单一完整描述。
* 在 PlayFab API 请求中添加了可选的数据中继：
  * `result.customData`
    * 这是可以附加到请求的任何上下文对象，可为结果提供上下文。例如，你可以为 **UpdatePlayerStatistics** 调用提供一个本地客户端玩家对象作为 `customData`，并在远程调用成功后在该玩家上设置更新后的统计数据。
  * `result.request`
    * API 调用的请求现在会中继到结果，这可以为结果提供上下文。例如，当你调用 `UpdatePlayerStatistics` 时，可以在更新本地玩家对象时从请求中读取更新后的统计数据。

### UnitySDK 特定变更

* [UnitySDK](https://github.com/PlayFab/UnitySDK)
  * 新的实验性功能：此版本的 PlayFab UnitySDK 现在可以选择让你查看玩家的设备信息。你可以查看的示例信息包括：内存、分辨率、用户代理、设备类型、OS 版本等。

~~**UnrealCppSdk 特定变更：**~~（更新：此 SDK 已弃用。有关新的 Unreal SDK，请参阅 [UnrealMarketplaceSDK](https://www.unrealengine.com/marketplace/playfab-SDK)）

* ~~已更新到 Unreal 4.17~~
* ~~拆分为三个独立的插件，每个插件具有不同的功能~~
* ~~整体进行了重大升级~~

## 170828

日期：2017 年 8 月 28 日

### Client API 变更

* ~~client.\[GetCurrentGames].\[result].Games\[i].GameServerState 已弃用，并由 \[GameServerStateEnum] 替代~~。
  ~~- GameServerState 被序列化为整数，这是一个错误。新字段是一个正确的枚举字符串。~~（更新：此项已弃用。请参阅[服务器](https://docs.xbox.com/zh-CN/services/playfab/multiplayer/servers/index.md)）

### 其他 API 变更

* 弃用了 Admin 和 Server API 上的以下 API 方法。
  * [GetActionsOnPlayersInSegmentTaskInstance](xref:titleid.playfabapi.com.admin.scheduledtask.getactionsonplayersinsegmenttaskinstance) - 此方法被意外标记为已弃用，但这是一个错误，已恢复。
* [SendPushNotification](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification) 现在可以指定 [TargetPlatforms](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification#sendpushnotificationrequest)
* 针对 [SendPushNotificationRequest](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification#sendpushnotificationrequest)，补充说明了哪些参数适用于哪些平台（不建议使用目标平台不支持的参数）。
* 在共享组文档中添加了一些有关[共享组](xref:titleid.playfabapi.com.client.sharedgroupdata.createsharedgroup)[限制](https://docs.xbox.com/zh-CN/services/playfab/community/associations/groups/using-shared-group-data.md)的信息（特别是它们不能用于公会之类的用途）。
* [玩家配置文件](xref:titleid.playfabapi.com.client.accountmanagement.getplayerprofile#playerprofilemodel)现在可以存储玩家的[联系电子邮件地址](xref:titleid.playfabapi.com.client.accountmanagement.getplayerprofile#contactemailinfomodel)。

### 新增 PlayStream 事件

* [entity\_created](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/entity-created.md)
* [entity\_logged\_in](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/entity-logged-in.md)

## 170814

日期：2017 年 8 月 14 日

### API 更新

* server.[GetFriendsList](xref:titleid.playfabapi.com.server.friendlistmanagement.getfriendslist) 和 client.[GetFriendsList](xref:titleid.playfabapi.com.client.friendlistmanagement.getfriendslist) API 方法现在会为你的每个好友返回一个 [PlayerProfile](xref:titleid.playfabapi.com.client.friendlistmanagement.getfriendslist#playerprofilemodel)。

### CSharpSdk 特定更新

* SDK 现在包含一个名为 [NewtonSoftJsonWrapper.cs](https://github.com/PlayFab/CSharpSDK/blob/master/PlayFabSDK/source/Json/NewtonsoftWrapper.cs) 的文件，可让你将我们附带的 SimpleJson 序列化程序替换为 NewtonSoft NuGet 包。
* 该文件包含有关如何使用它的说明。

## 170807

日期：2017 年 8 月 7 日

### 新增 API 方法

* admin.[DeletePlayer](xref:titleid.playfabapi.com.admin.accountmanagement.deleteplayer)

### 已弃用的 API 方法

* 这些 API 方法从未像预期那样完整地工作。为了解决这个问题，我们重新开始，构建了上一节中新的 [DeletePlayer](xref:titleid.playfabapi.com.admin.accountmanagement.deleteplayer) API，并弃用了以下方法：
* `admin.ResetUsers`
* `admin.DeleteUsers`

### API 更新

* `PlayerProfile`（在 [Admin](xref:titleid.playfabapi.com.admin.accountmanagement.getplayerprofile#playerprofilemodel)/[Server](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile#playerprofilemodel)/[PlayStream](xref:titleid.playfabapi.com.client.accountmanagement.getplayerprofile#playerprofilemodel) 中）包含一个新字段 `ContactEmailAddresses`，其中包含你可能已保存的有关玩家的任何电子邮件地址信息。

### PlayStream 事件

* 新事件：[auth\_token\_validated](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/auth-token-validated.md)
* 新事件：[player\_removed\_title](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/player-removed-title.md)
* 新事件：[player\_updated\_contact\_email](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/player-updated-contact-email.md)
* 新事件：[player\_verified\_contact\_email](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/player-verified-contact-email.md)
* 新事件：[sent\_email](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/TitleCommunications/sent-email.md)（仍处于 Beta 版阶段，但事件已公开）
* 事件中的新字段：[player\_realmoney\_purchase](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/Player/player-realmoney-purchase.md).TransactionId

~~**LumberyardSdk 变更：**~~

* ~~**升级警告：** 此 SDK 不再与以前版本的 Lumberyard 兼容。~~
* ~~此版本的 PlayFab LumberyardSdk 不再适用于 Lumberyard 1.3 版。它已升级，现在面向 Lumberyard 1.9。我们可能很快会使其面向 1.10，但同样不会向后兼容 1.9 或更早版本。有关详细信息，请参阅[我们的博客](https://blog.playfab.com/blog/cpp-SDK-updates)。~~

~~**UnrealCppSdk：**~~（**更新**：此 SDK 已弃用。有关新的 Unreal SDK，请参阅 [UnrealMarketplaceSDK](https://www.unrealengine.com/marketplace/playfab-SDK)）。

~~**Unreal SDK：**~~（**更新**：此 SDK 已弃用。有关新的 Unreal SDK，请参阅 [UnrealMarketplaceSDK](https://www.unrealengine.com/marketplace/playfab-SDK)）

* ~~PlayFab UnrealBlueprintSdk 现已更名为“Unreal SDK”~~
* ~~Unreal SDK 已更新到 4.16，并进行了一些小修复~~
* ~~我们还将取消对需要旧版 Visual Studio 的旧版 Unreal 的支持~~
* ~~我们现在支持 4.14 到 4.16~~
* ~~你的项目可能会继续在旧版 Visual Studio 上工作，但我们只能支持和测试 Visual Studio 2015 及更高版本~~
* ~~有关详细信息，请阅读[我们的博客](https://blog.playfab.com/blog/visual-studio-2013-deprecation-notice)~~

### Unity Editor Extensions

* 修复了下载和上传 CloudScript 修订版时的问题。
* 修复了系统语言使用非 ASCII 字母的用户遇到的问题。

## 170710

日期：2017 年 7 月 10 日

### API 变更

* 一项用于双重加密登录的 Enterprise 功能已从 Beta 版发布，现已上线。
* **新增 API 方法：**
  * admin.[CreatePlayerSharedSecret](xref:titleid.playfabapi.com.admin.authentication.createplayersharedsecret)
  * admin.[DeletePlayerSharedSecret](xref:titleid.playfabapi.com.admin.authentication.deleteplayersharedsecret)
  * admin.[GetPlayerSharedSecrets](xref:titleid.playfabapi.com.admin.authentication.getplayersharedsecrets)
  * admin.[SetPlayerSecret](xref:titleid.playfabapi.com.admin.authentication.setplayersecret)
  * admin.[UpdatePlayerSharedSecret](xref:titleid.playfabapi.com.admin.authentication.updateplayersharedsecret)
  * client.[GetTitlePublicKey](xref:titleid.playfabapi.com.client.authentication.gettitlepublickey)
  * client.[SetPlayerSecret](xref:titleid.playfabapi.com.client.authentication.setplayersecret)
  * server.[SetPlayerSecret](xref:titleid.playfabapi.com.server.authentication.setplayersecret)
* server.[RegisterGameRequest](xref:titleid.playfabapi.com.server.matchmaking) 有一个新属性：LobbyId，可让你尝试重新注册现有游戏
* server.[SendPushNotificationRequest](xref:titleid.playfabapi.com.server.accountmanagement.sendpushnotification#sendpushnotificationrequest) 现在接受一个新属性：Package，它定义了所有高级 Android 推送功能。

### SDK 中断性变更

* admin.[SetupPushNotificationRequest](xref:titleid.playfabapi.com.admin.title-widedatamanagement.setuppushnotification#setuppushnotificationrequest).Platform 现在定义为枚举而不是字符串。这不是对 API 的中断性变更（因为枚举以字符串形式传输），但需要一些用户在代码中将字符串转换为枚举值。

### 所有 SDK 中的变更

* 次要 SDK 中断性变更：大多数 SDK 在多个请求中删除了一个名为 UseSpecificVersion 的可选字段，该字段是将相邻的 Version 字段定义为 null 的另一种方式。并非所有语言都能在请求中将整数定义为 null，而此字段仅用于相关 SDK（特别是 Unreal）。如果你正在使用此字段，只需将其删除，并在适当时将相邻的 Version 字段设置为 null。

### Unity EditorExtensions 更新

* 更新了标志面板。
* 现在可以切换 `ENABLE/DISABLE_IDFA` 标志。
* 显示非 PlayFab 标志，并允许你删除它们（请谨慎使用，不要删除你需要的标志）。

### SDK 依赖项更新

* [UnitySDK](https://github.com/PlayFab/UnitySDK) 已使用 Unity2017.1.0f1 生成、打包和测试。
  * 只有细微的非中断性变更。
* [ActionScriptSDK](https://github.com/PlayFab/ActionScriptSDK) 已使用 AirSDK v26 测试。
  * SDK 未更改，示例已更新为面向 v26。
* [Cocos2d-xSDK](https://github.com/PlayFab/Cocos2d-xSDK) 已使用 Cocos 3.15.1 生成和测试。
* Cocos 3.14->3.15 包含的变更破坏了我们的示例，因此必须更新示例。该示例仍适用于 3.13 到 3.15，但可能不适用于较旧版本的 Cocos。SDK 未更改，应该适用于大多数最新的 3.X Cocos 版本。

## 170612

日期：2017 年 6 月 12 日

### 文档变更

* 为了更加清晰，对数十个 API 方法进行了许多小修订
* 将几个各自仅包含单个 API 方法的文档分组合并为一个名为“Platform Specific Methods”的组。
* 将“Matchmaking APIs”组重命名为“Matchmaking”，以与其他组保持一致。
* 许多有长度限制的字符串字段现在会说明允许的范围。

### 所有 SDK 中的变更

* 更新并修复了所有 SDK 自述文件中的大量损坏链接。

### UnitySDK 特定变更

* [UnitySDK](https://github.com/PlayFab/UnitySDK)
  * 我们现在支持多个版本的 Android API 和 Google Play Services。请在[此处](https://github.com/PlayFab/UnitySDK/tree/master/Packages)阅读更多详细信息。&#x20;
  * Unity + Android 推送插件的计划变更暂告一段落。如果你还有任何其他请求，请在[此处](https://community.playfab.com/questions/10840/android-plugin-upgrade-discussion.html)告诉我们。&#x20;

## 170530

日期：2017 年 5 月 30 日

### API 变更

* **中断性变更：** 在 server.[ReportPlayer](xref:titleid.playfabapi.com.server.playeritemmanagement.reportplayer) 中，我们立即删除了 [ReportPlayerServerRequest](xref:titleid.playfabapi.com.server.playeritemmanagement.reportplayer#reportplayerserverrequest) 中的 `titleId` 字段（而不仅仅是弃用）。所有举报现在都会发送到其自己的游戏，不能举报到其他游戏。
  * 这必须作为中断性变更，否则它将是一个轻微的跨游戏漏洞。如果你在此变更方面需要帮助，请[联系我们](https://community.playfab.com/questions/ask.html)。
* 在 client.[ReportPlayer](xref:titleid.playfabapi.com.client.accountmanagement.reportplayer) 和 server.[ReportPlayer](xref:titleid.playfabapi.com.server.playeritemmanagement.reportplayer) 中，我们在这两种情况下都弃用了 result.Updated。它始终为 true，如果玩家超过举报限制，API 调用将返回错误。我们将此错误条件更改为 OverLimit，以与其他限制保持一致。
* 所有[登录方法](xref:titleid.playfabapi.com.client.authentication)现在都可以在请求时返回一个[玩家配置文件对象](xref:titleid.playfabapi.com.client.authentication.loginwithandroiddeviceid#playerprofilemodel)，其中包含以前仅在排行榜结果中提供的信息。

### 新增 API 方法

* client.[GetPlayerProfile](xref:titleid.playfabapi.com.client.accountmanagement.getplayerprofile) 和 server.[GetPlayerProfile](xref:titleid.playfabapi.com.server.accountmanagement.getplayerprofile)
  * 返回以前仅在排行榜结果中提供的信息。

### 文档

* 小幅更新，若干示例不再包含有关已弃用字段的信息。
* 定义了 [ExecuteCloudScript](xref:titleid.playfabapi.com.client.server-sidecloudscript.executecloudscript) 返回值和日志的大小限制。

### 新增 PlayStream 事件

* gameserverhost\_started
* gameserverhost\_stopped
* [player\_set\_profile\_property](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/Player/player-set-profile-property.md)

### UnitySDK 特定变更

* [UnitySDK](https://github.com/PlayFab/UnitySDK)
  * 全面改进了我们的 Android 推送插件。
  * [博客文章](https://blog.playfab.com/blog/push-upgrade-5-22)
  * [新增/更新的指南](https://docs.xbox.com/zh-CN/services/playfab/live-service-management/game-configuration/title-communications/push-notifications/push-notifications-for-android.md)

### CSharpSDK 特定变更

* [CSharpSDK](https://github.com/PlayFab/CSharpSDK)
  * 现在可以指定注入到 API 请求中的额外标头。
  * 这是一项仅限 Enterprise 的功能，专门用于双重加密登录请求。

## 170508

日期：2017 年 5 月 8 日

### API 变更

* **中断性变更：**
  * 如果调用的返回值过大，[ExecuteCloudScript](xref:titleid.playfabapi.com.client.server-sidecloudscript.executecloudscript) 不会将其序列化。
  * 如果调用的日志过大，[ExecuteCloudScript](xref:titleid.playfabapi.com.client.server-sidecloudscript.executecloudscript) 不会将其序列化。
* 在上述任一情况下，调用仍返回 200/成功，但 FunctionResult 和/或 Logs 属性为 null。

### PlayStream 事件变更

* [player\_vc\_item\_purchased](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/Player/player-vc-item-purchased.md) 和 [character\_vc\_item\_purchased](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/Character/character-vc-item-purchased.md) 现在包含一个 StoreId 参数，指示进行购买时使用的商店。
* **新事件：**
  * [title\_profile\_view\_constraints\_changed](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/title-profile-view-constraints-changed.md)

### CSharpSDK 更新

* [CSharpSDK](https://github.com/PlayFab/CSharpSDK)
  * 删除了 [CSharpSDK](https://github.com/PlayFab/CSharpSDK) 中一些未使用的源文件。
  * 这应该不会影响任何现有项目或 NuGet 包，因为 Visual Studio 解决方案未引用这些文件。

### Postman 集合更新

* 几个常见的请求参数现在使用环境变量。
* 具体来说，TitleId=\{\{TitleId}}、PlayFabId=\{\{PlayFabId}}、CharacterId=\{\{CharacterId}} 和 CatalogVersion=\{\{PrimaryCatalogName}}

## 170424

日期：2017 年 4 月 24 日

### SDK 修补程序版本

* **[JavaSDK](https://github.com/PlayFab/JavaSDK) 更新：**
  * 我们现在为该 SDK 发布 Jar 文件，一个用于代码，一个用于 Java 文档，你可以将其导入 Java 项目，而无需复制粘贴代码。感谢 Will Iverson 帮助我们改进 [JavaSDK](https://github.com/PlayFab/JavaSDK) 的易用性
* **UnityEditorExtensions 更新：**
  * 我们解决了一些安装时出现的异常。具体来说，首次安装后不再需要重新启动 Unity。
  * 此外，还修复了 Client API 有时被不当禁用的问题。（已编辑）
* ~~**UnrealCppSdk 更新：**~~（更新：此 SDK 已弃用。有关新的 Unreal SDK，请参阅 [UnrealMarketplaceSDK](https://www.unrealengine.com/marketplace/playfab-SDK)）
* ~~现在可以从插件接口获取 titleId~~

## 170411

日期：2017 年 4 月 11 日

### API 变更

* 新的 Enterprise 功能：更多登录加密
* 可以使用 Policy API 方法强制要求登录调用使用第二层加密
* 请参阅：[UpdatePolicy](xref:titleid.playfabapi.com.admin.authentication.updatepolicy)，特别是 [UpdatePolicyRequest](xref:titleid.playfabapi.com.admin.authentication.updatepolicy#updatepolicyrequest).[Statements](xref:titleid.playfabapi.com.admin.authentication.updatepolicy#permissionstatement).[ApiConditions](xref:titleid.playfabapi.com.admin.authentication.updatepolicy#apicondition)
* 此功能仍部分处于 Beta 版阶段，不建议激活它（暂时不建议 - 即将推出！）

### 新增 PlayStream 事件

* [player\_receipt\_validation](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/Player/player-receipt-validation.md)

### UnitySDK 特定变更

* 现在可以指定注入到 API 请求中的额外标头（上一节中的加密登录调用需要此功能）。

### UnityEditorExtensions 特定变更

* 修复了 Unity 5.6 的编译问题。

## 170406

日期：2017 年 4 月 6 日

### Unity Android 推送插件的修补程序

* 修复了 Android 7.0+ 崩溃 bug。
* 修复了 Android 缺少大图标支持的问题 (Lollipop+)。
* 修复了 Android 7.0+ 上的小图标支持（现在支持 \_transparent.png）。

## 170403

日期：2017 年 4 月 3 日

### API 变更

* **Client 和 Server 排行榜方法：** Get-Leaderboard 方法（例如 client.[GetLeaderboard](xref:titleid.playfabapi.com.client.playerdatamanagement.getleaderboard)）之前新增了不可为 null 的参数 Version 和 UseSpecificVersion。要求它们不可为 null 是一项 API 中断性变更。我们已将这些属性更新为完全可选。
* **Client API：** [GetPurchaseResult](xref:titleid.playfabapi.com.client.playeritemmanagement.getpurchase#getpurchaseresult) 的 Items 字段已弃用：结果的这一部分经常不正确或不完整。它最终会被一个功能完整的参数替代。

### 新增 PlayStream 事件

* `player_display_name_filtered`

~~**Unreal 特定变更：**~~（**更新**：此 SDK 已弃用。有关新的 Unreal SDK，请参阅 [UnrealMarketplaceSDK](https://www.unrealengine.com/marketplace/playfab-SDK)）

* ~~UnrealCppSdk：修复了发布版本时 TitleId 等 PlayFab 设置丢失的问题。
  两个 SDK 均已在 Unreal 4.15 上测试并验证可正常工作~~

### JavaSDK 特定变更

* [JavaSDK](https://github.com/PlayFab/JavaSDK)
  * 重构了 [JavaSDK](https://github.com/PlayFab/JavaSDK) 的文件夹结构和测试。
  * 存储库的内部文件夹结构略有变化，以遵循 Maven 最佳做法。
  * 依赖项现在由 Maven 控制，不再随 SDK 一起提供。
  * 已将我们的内部自动化测试转换为 Maven 命令行。
  * 我们的 SDK 在 Maven Central 上不可用，因为这项工作已停滞。目前没有预计的完成时间。

### UnitySDK 特定变更

* [UnitySDK](https://github.com/PlayFab/UnitySDK)
  * 用于测试和生成资源包的内部 Unity 版本已更新到 5.6.0。我们的 Unity SDK 仍然与 Unity 4.7 到 5.6 的所有版本兼容。
  * 修复了 `UnityEditorExtensions` 在 Unity 5.6 中的编译问题。

## 170223

日期：2017 年 2 月 22 日

### API 变更

* PlayFab 排行榜现在为每个玩家存储一个头像 URL。这可用于为排行榜条目引用玩家图像。
* 所有排行榜 API 现在都可以获取排行榜的特定版本。这适用于设置为使用重置排行榜的游戏。
* 排行榜条目现在包含 [PlayerProfile](xref:titleid.playfabapi.com.client.accountmanagement.getplayerprofile#playerprofilemodel)，可用于显示更详细的排行榜，而无需额外的 API 调用
* PlayFab 现在可以使用 Windows Hello 对客户端进行身份验证，并验证 Windows 应用商店收据

### 新增 API

```text theme={null}
- [Client/UpdateAvatarUrl](xref:titleid.playfabapi.com.client.accountmanagement.updateavatarurl)
- `Client/RegisterWithWindowsHello`<!-- [Client/RegisterWithWindowsHello](xref:titleid.playfabapi.com.client.authentication.registerwithwindowshello) -->
- `Client/GetWindowsHelloChallenge`<!-- [Client/GetWindowsHelloChallenge](xref:titleid.playfabapi.com.client.authentication.getwindowshellochallenge) -->
- `Client/LoginWithWindowsHello`<!-- [Client/LoginWithWindowsHello](xref:titleid.playfabapi.com.client.authentication.loginwithwindowshello) -->
- `Client/LinkWindowsHello`<!-- [Client/LinkWindowsHello](xref:titleid.playfabapi.com.client.accountmanagement.linkwindowshello) -->
- `Client/UnlinkWindowsHello`<!-- [Client/UnlinkWindowsHello](xref:titleid.playfabapi.com.client.accountmanagement.unlinkwindowshello) -->
- [Client/ValidateWindowsStoreReceipt](xref:titleid.playfabapi.com.client.platformspecificmethods.validatewindowsstorereceipt)
- [Server/SetFriendTags](xref:titleid.playfabapi.com.server.friendlistmanagement.setfriendtags)
```

### 新增 PlayStream 事件

* [player\_changed\_avatar](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/PlayerIdentity/player-changed-avatar.md)

### WindowsSDK 特定变更

* 向 JSON 序列化程序添加了一些缺失的 null 检查。

### 所有 SDK

* 对 [testTitleData](https://github.com/PlayFab/SDKGenerator/blob/master/JenkinsConsoleUtility/testTitleData.md) 格式进行了少量补充。这仅适用于 SDK 附带的示例测试项目。

## 170130

日期：2017 年 1 月 29 日

### 中断性变更

* 随着今天的主要版本发布，更改了 [JavaScriptSDK](https://github.com/PlayFab/JavaScriptSDK) 和 [NodeSDK](https://github.com/PlayFab/NodeSDK) 的文件夹结构。升级时，这可能会导致你的项目出现一些连接断开的情况。（文件名和文件内容没有更改。现在新增了以前不存在的 **TypeScript** 文件。）

### API 变更

* 为 CDN API 添加了说明性文档。特别提到 CDN 不属于我们的免费服务。
* Google 登录修复（博客文章待发布）。

### 新增 PlayStream 事件

* `developer_logged_in`
* `developer_registered`
* [studio\_created](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/DeveloperIdentity/studio-created.md)
* [studio\_user\_added](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/DeveloperIdentity/studio-user-added.md)
* [studio\_user\_invited](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/DeveloperIdentity/studio-user-invited.md)
* [studio\_user\_removed](https://docs.xbox.com/zh-CN/services/playfab/api-references/events/DeveloperIdentity/studio-user-removed.md)

### JavaScriptSDK 特定变更

* [JavaScriptSDK](https://github.com/PlayFab/JavaScriptSDK)
  * 重大升级发布日！版本号已更新为 1.0。
  * TypeScript 集成！
  * 存储库清理：将 SDK 文件与示例文件分开。
  * 已将我们的示例项目转换为 TypeScript。
  * 请参阅[我们的博客](https://blog.playfab.com/blog/typescript/)！

### NodeSDK 特定变更

* [NodeSDK](https://github.com/PlayFab/NodeSDK)
  * 重大升级发布日！版本号已更新为 1.0
  * TypeScript 集成！
  * 已将我们的示例项目转换为 TypeScript
  * 请参阅[我们的博客](https://blog.playfab.com/blog/typescript/)！

### CloudScript 示例

* 发布了一个新的示例存储库。
* TypeScript 集成！
* 请参阅[我们的博客](https://blog.playfab.com/blog/typescript/)！
* 以及[新存储库](https://github.com/PlayFab/SdkTestingCloudScript)！
* 我们会随着时间的推移扩展此存储库。

### UnitySDK 特定变更

* [UnitySDK](https://github.com/PlayFab/UnitySDK)
  * 修复了 **JsonWrapper** 并非在所有情况下都按预期工作的问题。
  * 有关详细信息，请参阅我们的论坛帖子：[https://community.playfab.com/questions/7599/cloudscript-getplayercombinedinfo-little-problem.html](https://community.playfab.com/questions/7599/cloudscript-getplayercombinedinfo-little-problem.html)
  * 删除了以下所有已弃用的包装类，改用 `PlayFab.Json.JsonWrapper`：
    * `PlayFab.Json.JsonConvert`（使用 `PlayFab.Json.JsonWrapper`）
    * `PlayFab.Json.SimpleJson`（使用 `PlayFab.Json.JsonWrapper` 或 `PlayFab.Json.PlayFabSimpleJson`）
    * `PlayFab.SimpleJson`（使用 `PlayFab.Json.JsonWrapper` 或 `PlayFab.Json.PlayFabSimpleJson`）
  * 重申 [160627](https://docs.xbox.com/zh-CN/announcements/playfab/2016.md#160627) 中的说明：`UnityEngine.SimpleJson` 是 `UnityEngine.dll` 中的一个空命名空间，因此我们必须避免使用该标识符。

### Unity Editor Extensions

* 解决了当你的帐户无法查看任何工作室时 PlayFab 面板会无限重新加载的问题。
* 解决了从 PlayFab 面板中选择游戏时 `PlayFabSharedSettings`（Scriptable Object）无法正确保存的问题。

## 170109

日期：2017 年 1 月 8 日

### 中断性变更

* 删除了旧版 WindowsSDK 中的 lib，必须在 Visual Studio 中重新创建它们。这些 lib 在 vs2015 中从未正常工作过，因此强烈建议你直接更新到上周发布的最新 WindowsSDK。

### API 变更

* 修复了文档中的拼写错误。

### 所有 SDK

* [新的入门指南](../index.yml)

### SDKGenerator 特定变更

* [SDKGenerator](https://github.com/PlayFab/SDKGenerator)
  * [ActionScriptSDK](https://github.com/PlayFab/ActionScriptSDK) 的生成脚本与其他 SDK 不一致。我们简化了生成 [ActionScriptSDK](https://github.com/PlayFab/ActionScriptSDK) 的 [SDKGenerator](https://github.com/PlayFab/SDKGenerator) 命令，使其与其他 SDK 保持一致。（SDK 本身没有变化。）

### UnitySdk 特定变更

* [UnitySdk](https://github.com/PlayFab/UnitySDK)
  * PlayFabSettings 中的一些公共元素新增了 Obsolete 标记：`PlayFabSettings.PlayFabSharedSettings` `PlayFabSettings.DefaultPlayFabApiUrl` `PlayFabSettings.GetSharedSettingsObject()` `PlayFabSettings.ProductionEnvironmentUrl`

经过一段过渡期后，这些元素将变为私有。

### WindowsSDK 特定变更

* 使用 BFG 清理了 GitHub 存储库，并从历史记录中删除了所有大文件。请删除你的克隆或分支，然后重新创建，以使你的历史记录保持干净。

## 170102

日期：2017 年 1 月 1 日

### API 变更

* `Client/GetUserCombinedInfo` 已转为完全过时，我们已将其从 SDK 和文档中删除。

### Cocos2d-xSDK 特定变更

* [Cocos2d-xSDK](https://github.com/PlayFab/Cocos2d-xSDK)
  * 修复了 PlayFab API 返回无效响应时发生的崩溃。
  * 解决了一些编译器警告。
  * 在我们的测试示例项目中为 lambda 回调函数添加了单元测试。

### UnitySDK 特定变更

* [UnitySDK](https://github.com/PlayFab/UnitySDK)
  * 我们已在内部更新到 Unity 5.5，并且我们的 **.unitypackage** 文件使用此版本生成

  * 与往常一样，我们继续支持 *Unity 4.7 及更高的所有版本*。

  * 向许多静态类添加了静态构造函数，以巩固 **Mono2x** 编译器中的初始化顺序。这应该可以解决我们在 iOS 中看到的一些 `PlayFabSharedSettings` 问题。

  * **IDFA/ADID** 现在可以在 Unity 5.6 Beta 版中正常工作。

  * **已知问题：** Unity 5.6 Beta 版生成的版本无法在 **Windows Server** (**OS**) 上运行，其中包括 PlayFab 游戏服务器托管。如果这对你有影响，请联系 Unity。

### WindowsSDK 特定变更

* 重大升级发布日！
* 博客文章：[Windows SDK Update Released](https://api.playfab.com/blog/windows-SDK-update-released)
* 升级指南：[PlayFab WindowsSdk v0.x -> v1.x 升级指南](https://github.com/PlayFab/WindowsSdk/blob/master/UpgradeGuide.md)


## Related topics

- [PlayFab 2018 年发行说明](https://docs.xbox.com/zh-CN/announcements/playfab/2018.md)
- [PlayFab 2019 年发行说明](https://docs.xbox.com/zh-CN/announcements/playfab/2019.md)
- [PlayFab 2020 年发行说明](https://docs.xbox.com/zh-CN/announcements/playfab/2020.md)
