Ios 上传高分-如何使其仅对朋友可见?
我想知道,当你们上传你们的高分时,你们是否有可能和你们的一个朋友比较你们的分数(若更简单,只选择联系人)? 如果是这样的话,有没有人能给我指出正确的方向,怎么做?我在谷歌上找不到任何有用的东西。 据我所知,这应该是可能的,因为像WhatsApp这样的应用程序也可以让你选择想要发送信息的特定联系人。 与此相关:我可以使用云来上传highscore吗?还是应该使用我的Web空间?我没有针对iOS/etc回答这个问题 您通常会在您的应用程序与之通信的网站上公开一个(或POX/POJSON——纯旧XML或纯旧JSON)服务,它将负责协商友谊、上传高分和检索高分。这可能会击中您控制下的数据库,也可能会连接到云服务器;这两种方法都没有问题(如果您想应用我的SQL概念,Azure是一个不错的选择) 在您的数据库中,您将维护一个朋友列表-这是一个非常简单的结构设置。实际上,您需要两个如下所示的表:Ios 上传高分-如何使其仅对朋友可见?,ios,xcode,Ios,Xcode,我想知道,当你们上传你们的高分时,你们是否有可能和你们的一个朋友比较你们的分数(若更简单,只选择联系人)? 如果是这样的话,有没有人能给我指出正确的方向,怎么做?我在谷歌上找不到任何有用的东西。 据我所知,这应该是可能的,因为像WhatsApp这样的应用程序也可以让你选择想要发送信息的特定联系人。 与此相关:我可以使用云来上传highscore吗?还是应该使用我的Web空间?我没有针对iOS/etc回答这个问题 您通常会在您的应用程序与之通信的网站上公开一个(或POX/POJSON——纯旧XML
CREATE TABLE [UserAccount]
(
[ID] BIGINT IDENTITY(1,1) PRIMARY KEY,
[Name] NVARCHAR(255),
)
CREATE TABLE [Friendship]
(
[User1] BIGINT, -- Primary key, FK to [UserAccount].[ID]
[User2] BIGINT, -- Primary key, FK to [UserAccount].[ID]
)
这将允许您通过以下方式表示友谊:
User: ID = 1, Name = Joe
User: ID = 2, Name = Fred
Friendship: User1 = 1, User2 = 2
Friendship: User1 = 2, User1 = 1
然后,您可以使用以下查询查询朋友:
SELECT [F1].[User2] AS [ID] FROM [Friendship] AS [F1]
WHERE [F1].[User1] = @CurrentUser
-- Check for symmetric relationship.
AND EXISTS
( SELECT 1 FROM [Friendship] AS [F2]
WHERE [F2].[User2] = [F1].[User1] AND [F2].[User1] = [F1].[User2] );
如果您的SQL变体支持TVF(表值函数),则可以将其设置为TVF(表值函数)。接下来,您将创建一个高分表和一个将其映射到用户的表
CREATE TABLE [Highscore]
{
[ID] BIGINT IDENTITY(1,1) PRIMARY KEY,
[Score] INT,
}
CREATE TABLE [UserHighscore]
{
[UserID] BIGINT, -- Primary key, FK to User.ID
[HighscoreID] BIGINT, -- Primary key, FK to Highscore.ID
}
这方面的一些示例数据如下:
-- In this game you can only score over 9000!
Highscore: ID = 1, Score = 9001
Highscore: ID = 2, Score = 9005
Highscore: ID = 3, Score = 9008
UserHighscore: UserID = 1, HighscoreID = 1
UserHighscore: UserID = 1, HighscoreID = 2
UserHighscore: UserID = 2, HighscoreID = 3
然后,您可以查询朋友的高分:
SELECT TOP(10) [U].[Name], [H].[Score] FROM [Friendship] AS [F1]
LEFT INNER JOIN [User] AS [U] ON [U].[ID] = [F1].[User2]
LEFT INNER JOIN [HighscoreUser] AS [HU] ON [HU].[UserID] = [F1].[User2]
LEFT INNER JOIN [Highscore] AS [H] ON [H].[ID] = [HU].[UserID]
WHERE [F1].[User1] = @CurrentUser
-- Check for symmetric relationship.
AND EXISTS
( SELECT 1 FROM [Friendship] AS [F2]
WHERE [F2].[User2] = [F1].[User1] AND [F2].[User1] = [F1].[User2] )
ORDER BY [H].[Score] DESC;
该查询将给出你朋友的前10分;给你他们的名字和分数。谢谢你的快速回答,我一定会调查的。但出于好奇:当用户从其联系人中添加联系人时,这种方法是否有效?@Blade这实际上取决于您的应用程序。您需要了解如何访问用户的电话簿;然后在数据库中查找它们并自动建立关系(显然你首先需要他们的电话号码)-这可能正是WhatsApp的工作原理。然后非常感谢。幸好现在是周末,我有足够的时间