iOS 没有永久设备 ID 的应用用户 ID

iOS app user id without permanent device ID

我有一个应用程序(不是游戏),该应用程序在服务器数据库中为用户存储了一些数据,因此我需要一个用户 ID 才能使用。 由于我现在无法在 ios 设备中拥有永久 ID,因此我使用了 google 玩游戏登录方法。

用户打开应用程序并重定向到 safari,在那里他登录 google 并 returns 到应用程序,我使用 google 玩游戏 ID 来识别我的用户。

我的二进制文件因此被拒绝了,所以我可以使用 iOS 游戏服务,但它不是游戏,所以我担心再次被拒绝,任何人使用 ios游戏服务之前只是为了在非游戏应用中为用户获取标识符?

这是拒绝信息

We noticed an issue in your app that contributes to a lower quality user >experience than Apple users expect:

  • Upon launching the app, a web page in mobile Safari opens for logging in, then >returns the user to the app. The user should be able to log in without opening >Safari first.

在启动时无需打开浏览器 window 即可获取用户标识符的任何其他方法? 用户注册时最好不要输入用户名或密码。

非常感谢任何帮助。

这是 iOS 上的常见情况。许多应用程序,如愤怒的小鸟,需要注册或使用第三方登录,如 Facebook,有时需要 Game Center ID,如果你想确保你不会在卸载应用程序时丢失你的数据。

因此,通常使用应用供应商 ID 来识别用户服务器端,直到您有另一个 ID 来识别它们。

当然,uninstalling/reinstalling 应用程序会重置供应商 ID。每个应用程序的 Game Center ID 都是唯一的,但在安装之间是一致的,因此 Game Center ID 似乎是 Apple 希望您使用的。

来自Working with Players in Game Center

Player Identifier Strings Uniquely Identify Players

Every player account is uniquely identified by a player identifier string contained within a GKPlayer object. The identifier string is created when the player’s account is first created and never changes, even if other information in the account changes. Thus, player identifiers are the only reliable way to track a particular player. For this reason, the Game Kit API uses player identifiers wherever a specific player needs to be identified. If Game Center needs to identify a specific player in your game, the Game Kit API returns that player’s identifier. Your game uses a player identifier to retrieve information from Game Center about that player.

In addition to using player identifiers in your interactions with Game Center, your game should also use the player identifier whenever it wants to store data locally about a specific player. For example, if your game stores data to track a player’s progress (such as on the device, on your own server, or on iCloud), use player identifiers to distinguish between multiple players playing on the same device. That way, if a different player signs into the device, you can immediately personalize the experience by showing content specific to that player.

卸载时丢失进度是标准行为。即使在卸载后保存进度或通过注册或登录在设备之间共享进度也是一种奖励。