PICO Unreal Platform SDK
PicoPresenceInterface.h
1// Copyright 2022 Pico Technology Co., Ltd.All rights reserved.
2// This plugin incorporates portions of the Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc.In the United States of America and elsewhere.
3// Unreal® Engine, Copyright 1998 – 2022, Epic Games, Inc.All rights reserved.
4
5#pragma once
6
7#include "CoreMinimal.h"
8#include "OnlineSubsystemPico.h"
9#include "OnlineSubsystemPicoPackage.h"
10#include "OnlineSubsystemPicoNames.h"
11
12
14
16
29DECLARE_LOG_CATEGORY_EXTERN(PresenceInterface, Log, All);
30
31// Request
32DECLARE_DELEGATE_TwoParams(FOnPresenceClearComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
33DECLARE_DELEGATE_TwoParams(FOnReadInvitableUserComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
34DECLARE_DELEGATE_TwoParams(FOnPresenceSetComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
35DECLARE_DELEGATE_TwoParams(FOnPresenceSetDestinationComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
36DECLARE_DELEGATE_TwoParams(FOnPresenceSetIsJoinableComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
37DECLARE_DELEGATE_TwoParams(FOnPresenceSetLobbySessionComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
38DECLARE_DELEGATE_TwoParams(FOnPresenceSetMatchSessionComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
39DECLARE_DELEGATE_TwoParams(FOnPresenceSetPresenceExtraComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
40DECLARE_DELEGATE_TwoParams(FOnReadSentInvitesComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
41DECLARE_DELEGATE_TwoParams(FOnSentInvitesComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
42DECLARE_DELEGATE_TwoParams(FOnGetDestinationsComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
43DECLARE_DELEGATE_TwoParams(FOnLaunchInvitePanelComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
44DECLARE_DELEGATE_TwoParams(FOnShareMediaComplete, bool /*IsSuccessed*/, const FString& /*Error Message*/);
45
46
47DECLARE_MULTICAST_DELEGATE_FourParams(FJoinIntentReceived, const FString& /*DeeplinkMessage*/, const FString& /*DestinationApiName*/, const FString&/*LobbySessionId*/, const FString& /*MatchSessionId*/);
48DECLARE_MULTICAST_DELEGATE_ThreeParams(FLeaveIntentReceived, const FString& /*DestinationApiName*/, const FString&/*LobbySessionId*/, const FString& /*MatchSessionId*/);
49
51class ONLINESUBSYSTEMPICO_API FPicoPresenceInterface
52{
53
54private:
55
56 FOnlineSubsystemPico& PicoSubsystem;
57
58 TMap<FString, TSharedRef<FOnlinePicoFriend>> InvitableUsers;
59
60 TArray<FPicoApplicationInvite> InvitesArray;
61
62 TArray<FPicoDestination> DestinationArray;
63
64public:
65 FPicoPresenceInterface(FOnlineSubsystemPico& InSubsystem);
67
76 bool PresenceClear(const FOnPresenceClearComplete& Delegate = FOnPresenceClearComplete());
77 void OnQueryPresenceClearComplete(ppfMessageHandle Message, bool bIsError, const FOnPresenceClearComplete& Delegate);
78
90 bool ReadInvitableUser(TArray<FString> SuggestedUserList, const FOnReadInvitableUserComplete& Delegate = FOnReadInvitableUserComplete());
91 void OnQueryReadInvitableUserComplete(ppfMessageHandle Message, bool bIsError, TMap<FString, TSharedRef<FOnlinePicoFriend>>& OutList, bool bAppendToExistingMap, const FOnReadInvitableUserComplete& Delegate);
92
101 bool GetInvitableFriendList(TArray<TSharedRef<FOnlinePicoFriend>>& OutFriends);
102
121 bool PresenceSet(const FString& ApiName, const FString& LobbySessionId, const FString& MatchSessionId, bool bIsJoinable, const FString& Extra, const FOnPresenceSetComplete& Delegate = FOnPresenceSetComplete());
122 void OnQueryPresenceSetComplete(ppfMessageHandle Message, bool bIsError, const FOnPresenceSetComplete& Delegate);
123
135 bool PresenceSetDestination(const FString& ApiName, const FOnPresenceSetDestinationComplete& Delegate = FOnPresenceSetDestinationComplete());
136 void OnQueryPresenceSetDestinationComplete(ppfMessageHandle Message, bool bIsError, const FOnPresenceSetDestinationComplete& Delegate);
137
153 bool PresenceSetSetIsJoinable(bool bIsJoinable, const FOnPresenceSetIsJoinableComplete& Delegate = FOnPresenceSetIsJoinableComplete());
154 void OnQueryPresenceSetSetIsJoinableComplete(ppfMessageHandle Message, bool bIsError, const FOnPresenceSetIsJoinableComplete& Delegate);
155
167 bool PresenceSetLobbySession(const FString& LobbySession, const FOnPresenceSetLobbySessionComplete& Delegate = FOnPresenceSetLobbySessionComplete());
168 void OnQueryPresenceSetLobbySessionComplete(ppfMessageHandle Message, bool bIsError, const FOnPresenceSetLobbySessionComplete& Delegate);
169
181 bool PresenceSetMatchSession(const FString& MatchSession, const FOnPresenceSetMatchSessionComplete& Delegate = FOnPresenceSetMatchSessionComplete());
182 void OnQueryPresenceSetMatchSessionComplete(ppfMessageHandle Message, bool bIsError, const FOnPresenceSetMatchSessionComplete& Delegate);
183
195 bool PresenceSetExtra(const FString& Extra, const FOnPresenceSetPresenceExtraComplete& Delegate = FOnPresenceSetPresenceExtraComplete());
196 void OnQueryPresenceSetExtraComplete(ppfMessageHandle Message, bool bIsError, const FOnPresenceSetPresenceExtraComplete& Delegate);
197
208 bool PresenceReadSendInvites(const FOnReadSentInvitesComplete& Delegate = FOnReadSentInvitesComplete());
209 void OnQueryPresenceReadSendInvitesComplete(ppfMessageHandle Message, bool bIsError, TArray<FPicoApplicationInvite>& OutList, bool bAppendToExistingArray, const FOnReadSentInvitesComplete& Delegate);
210
222 bool PresenceSendInvites(TArray<FString> UserIdArray, const FOnSentInvitesComplete& Delegate = FOnSentInvitesComplete());
223 void OnQuerySendInvitesComplete(ppfMessageHandle Message, bool bIsError, TArray<FPicoApplicationInvite>& OutList, bool bAppendToExistingArray, const FOnSentInvitesComplete& Delegate);
224
233 bool GetSendInvitesList(TArray<FPicoApplicationInvite>& OutList);
234
245 bool PresenceGetDestinations(const FOnGetDestinationsComplete& Delegate = FOnGetDestinationsComplete());
246 void OnQueryGetDestinationsComplete(ppfMessageHandle Message, bool bIsError, TArray<FPicoDestination>& OutList, bool bAppendToExistingArray, const FOnGetDestinationsComplete& Delegate);
247
256 bool PresenceGetDestnationsList(TArray<FPicoDestination>& OutList);
257
264 bool LaunchInvitePanel(const FOnLaunchInvitePanelComplete& Delegate = FOnLaunchInvitePanelComplete());
265
294 bool ShareMedia(EShareMediaType InMediaType, const FString& InVideoPath, const FString& InVideoThumbPath, TArray<FString> InImagePaths, EShareAppTyp InShareType, const FOnShareMediaComplete& Delegate = FOnShareMediaComplete());
295
296PACKAGE_SCOPE:
297
298 FDelegateHandle OnJoinIntentReceivedHandle;
299 void OnJoinIntentReceiveResult(ppfMessageHandle Message, bool bIsError);
300
301 FDelegateHandle OnLeaveIntentReceivedHandle;
302 void OnLeaveIntentReceiveResult(ppfMessageHandle Message, bool bIsError);
303public:
304
306 FJoinIntentReceived JoinIntentReceivedCallback;
307
309 FLeaveIntentReceived LeaveIntentReceivedCallback;
310}; // end of Presence // end of Function
OnlinePicoFriend class inherited from FOnlineFriend(Unreal Engine).
Definition: OnlineFriendsInterfacePico.h:20
Pico Presence interface class.
Definition: PicoPresenceInterface.h:52
bool PresenceReadSendInvites(const FOnReadSentInvitesComplete &Delegate=FOnReadSentInvitesComplete())
Reads a list of sent invitations.
bool ShareMedia(EShareMediaType InMediaType, const FString &InVideoPath, const FString &InVideoThumbPath, TArray< FString > InImagePaths, EShareAppTyp InShareType, const FOnShareMediaComplete &Delegate=FOnShareMediaComplete())
Share videos or images to Douyin (a video app in Mainland China). Currently, this function is availab...
bool GetInvitableFriendList(TArray< TSharedRef< FOnlinePicoFriend > > &OutFriends)
Gets a list of invitable friends for a user. These friends are previously retrieved from the online s...
FJoinIntentReceived JoinIntentReceivedCallback
Gets notified when the join intent has been received.
Definition: PicoPresenceInterface.h:306
bool PresenceGetDestnationsList(TArray< FPicoDestination > &OutList)
Gets a list of destinations when PresenceGetDestinations is complete.
bool PresenceClear(const FOnPresenceClearComplete &Delegate=FOnPresenceClearComplete())
Clears a user's presence data in the current app.
bool ReadInvitableUser(TArray< FString > SuggestedUserList, const FOnReadInvitableUserComplete &Delegate=FOnReadInvitableUserComplete())
Reads a list of invitable users for a user.
bool PresenceSetSetIsJoinable(bool bIsJoinable, const FOnPresenceSetIsJoinableComplete &Delegate=FOnPresenceSetIsJoinableComplete())
Sets whether a user is joinable.
bool GetSendInvitesList(TArray< FPicoApplicationInvite > &OutList)
Gets a list of sent invitations when PresenceSendInvites or PresenceReadSendInvites is complete.
bool PresenceSetDestination(const FString &ApiName, const FOnPresenceSetDestinationComplete &Delegate=FOnPresenceSetDestinationComplete())
Replaces a user's current destination with the provided one.
bool PresenceSetExtra(const FString &Extra, const FOnPresenceSetPresenceExtraComplete &Delegate=FOnPresenceSetPresenceExtraComplete())
Sets extra presence data for a user.
bool PresenceSetLobbySession(const FString &LobbySession, const FOnPresenceSetLobbySessionComplete &Delegate=FOnPresenceSetLobbySessionComplete())
Replaces a user's current lobby session ID with the provided one.
bool LaunchInvitePanel(const FOnLaunchInvitePanelComplete &Delegate=FOnLaunchInvitePanelComplete())
Call up the system panel to invite friends.
bool PresenceSetMatchSession(const FString &MatchSession, const FOnPresenceSetMatchSessionComplete &Delegate=FOnPresenceSetMatchSessionComplete())
Replaces a user's current match session ID with the provided one.
bool PresenceSendInvites(TArray< FString > UserIdArray, const FOnSentInvitesComplete &Delegate=FOnSentInvitesComplete())
Sends invitations to users.
bool PresenceGetDestinations(const FOnGetDestinationsComplete &Delegate=FOnGetDestinationsComplete())
Gets all the destinations that can be set for a user.
FLeaveIntentReceived LeaveIntentReceivedCallback
Gets notified when the leave intent has been received.
Definition: PicoPresenceInterface.h:309
bool PresenceSet(const FString &ApiName, const FString &LobbySessionId, const FString &MatchSessionId, bool bIsJoinable, const FString &Extra, const FOnPresenceSetComplete &Delegate=FOnPresenceSetComplete())
Sets presence data for a user in the current app.
EShareMediaType
Share media type.
Definition: OnlineSubsystemPicoNames.h:591
EShareAppTyp
Share to app type.
Definition: OnlineSubsystemPicoNames.h:600