如何在 iOS 中实现用户挂起功能

Posted

技术标签:

【中文标题】如何在 iOS 中实现用户挂起功能【英文标题】:How to implement user suspend feature in iOS 【发布时间】:2015-03-26 03:49:00 【问题描述】:

ios 应用程序中,当我检测到用户的不当行为(例如发布暴力内容)时,我不想暂停用户使用我的应用程序。实现此功能的基本思想是为每个应用程序安装创建并保存一个唯一的 id,并暂停服务器 api 的使用。

我的问题是,如何实现这个功能即使用户重新安装应用程序,仍然通过苹果的iTunes提交

我想出了两种技术上实现此功能的方法,但想知道 Apple 会如何应对。

    存储 IDFA(据我了解,用户可以代为重置 id) 将应用生成的 udid 存储到 Keychain(即使用户删除应用也不应删除)

我知道没有完美的答案,但希望与尝试过提交类似申请的任何人或非常了解 Apple 指南的任何人讨论此问题。谢谢。

【问题讨论】:

【参考方案1】:

Apple 将拒绝不当使用 IDFA 的应用。

如果您的应用程序不使用服务器登录(此时,您需要的任何标志都可以传递给客户端),钥匙串存储将是唯一真正的解决方案。

但是,如果您使用服务器登录,您会阻止设备,而不是用户。这是你的意图吗?

顺便说一句,没有服务器登录,确定的用户仍然可以绕过钥匙串存储:Reset keychain on the device

【讨论】:

感谢您清理问题。是的,我打算阻止设备,我不打算使用服务器登录。当我将钥匙串用于此类功能时,我仍然担心苹果是否会拒绝我的应用程序。您对此有何建议? 除非 Apple 明确说明(就像他们对广告标识符的使用/误用所做的那样),这有点猜测,但您所描述的只是钥匙串数据,就像您可能的其他任何东西一样店铺。没有什么会引起明显的担忧。【参考方案2】:

您可以阻止给定的帐户。如今,大多数人都使用电子邮件地址键入帐户。有些需要信用卡(Facebook 使用信用卡号完全验证帐户),有些需要银行帐户(PayPal 必须在某处汇款!),并且请求电话号码越来越受欢迎(Twitter 正在那里)。最后,要真正有效,你必须阻止一些难以产生的东西。

使用电子邮件,您的用户可以随时创建新帐户。查看 mailinator.com。或者,您只需要一个域即可拥有任意数量的电子邮件地址——我每天使用五个不同的电子邮件帐户,每月使用大约两打。

安装 ID 没问题,但用户总是可以卸载/重新安装。而且,如果您确实设法获得了一个设备识别号码(真的很容易做到,即使在后 UDID 时代也是如此)以便您可以阻止给定的设备,您的用户只需获得一个新设备,或者破解您的应用程序即可使用一些随机值,或使用 cURL 欺骗您的 API。我拥有三部 iPhone、两部 iPad、两部三星平板电脑、三部其他 android 手机、两部 Mac Book Pro、一台 mini、两台 PC,我运行三个虚拟 Linux 机器和一个虚拟 XP 机器。当有人将被屏蔽的设备出售给非滥用用户时会发生什么?

因此,只需屏蔽用户的帐户,保留出色的日志文件,并继续打好仗。

【讨论】:

以上是关于如何在 iOS 中实现用户挂起功能的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ios 中实现条码扫描器功能?

如何通过 XCode 在 iOS 应用中实现相机功能

如何在 iOS 中实现类似于 Android 手机(默认)的裁剪功能?

如何在 grails 中实现请求超时?

如何在我的 iOS 应用程序中实现该功能?

如何使用 iOS Pin It SDK 在 Pinterest 中实现 Followboard 按钮功能?