At the moment, I use PlayFabClientAPI.AddFriend with FriendTitleDisplayName in my game when player A wants to add player B to his friends list. player A needs to write player B's DisplayName in a text box. Any player can add any other player to his friends list. The player can use this friends list to compare his statistics with the other players statistics in the friends list. The players in the friends list don't get notified that they were added by a certain player because it's not necessary that they know it.
But I want to create some features that are restricted to close friends only. In addition, if player A sends a close friends request to player B then player B needs to accept it in order to get close friends. In addition, if player A is not yet in player B's friends list, then player A should automatically be added to player B's friends while accepting player A's close friends request. If player B declines the request, then they are not close friends and player B will not automatically add player A to his friends list. In both cases, player A should get a response so that he knows if player B accepted or declined the close friends request.
Close friends restricted features:
I want that close friends can invite each other to participate in special challenges during events in my game. It's necessary that player A accepts player B's challenge invitation in order that the challenge gets started for both players. player B should get notified if player A accepted or declined the challenge invitation. In addition, each player needs to pay 500 Gold Coins as participation fee when the challenge gets started. The challenge can not be started when one or both players have not enough Gold Coins.
For example, I want to create the following challenge during my events: The player(player A or player B) with the highest score in the global leaderboard at the end of the event wins 1000 Gold Coins.
The global leaderboard is active and all title players can add scores from the start time of the event until the end time of the event. The challenge between two players doesn't affect the global leaderboard. I just want to compare player A's and player B's score at the end of the event if they started a challenge and the winner gets a 1000 Gold Coins reward. The global leaderboard's rewards are different and don't affect the challenge's reward.
It should only be possible to send a challenge invitation to a close friend and during the event is running. I store the start time and the end time of my leaderboard events in my PlayFab Title-->Content-->Title Data.
Is it possible to create a close friends system with the current PlayFab APIs? Would it be possible to distinguish between a close friend and a normal friend when I call PlayFabClientAPI.GetFriendLeaderboard to get the friends scores?
How can I create the request and send the notification when a player wants to get close friends with another player?
How can I create the challenge invitation and send the notification when a player wants to start a challenge with a close friend?