GKGameActivity

Struct GKGameActivity 

Source
pub struct GKGameActivity { /* private fields */ }
Available on crate feature GKGameActivity only.
Expand description

GKGameActivity represents a single instance of a game activity for the current game.

See also Apple’s documentation

Implementations§

Source§

impl GKGameActivity

Source

pub unsafe fn identifier(&self) -> Retained<NSString>

The identifier of this activity instance.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn activityDefinition(&self) -> Retained<GKGameActivityDefinition>

Available on crate feature GKGameActivityDefinition only.

The activity definition that this activity instance is based on.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn properties(&self) -> Retained<NSDictionary<NSString, NSString>>

Properties that contain additional information about the activity.

This takes precedence over the defaultProperties on the activityDefinition.

  1. This dictionary is initialized with the default properties from the activity definition and deep linked properties if any.
  2. If deep linking contains the same key as the default properties, the deep linked value will override the default value.
  3. The properties can be updated at runtime.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn setProperties( &self, properties: &NSDictionary<NSString, NSString>, )

Setter for properties.

This is copied when set.

§Safety

This might not be thread-safe.

Source

pub unsafe fn state(&self) -> GKGameActivityState

Available on crate feature GKGameActivityState only.

The state of the game activity.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn partyCode(&self) -> Option<Retained<NSString>>

If the game supports party code, this is the party code that can be shared among players to join the party.

If the game does not support party code, this value will be nil.

  • SeeAlso: -[GKGameActivity startWithDefinition:partyCode:completionHandler:] for creating a game activity with a custom party code.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn partyURL(&self) -> Option<Retained<NSURL>>

If the game supports party code, this is the URL that can be shared among players to join the party.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn creationDate(&self) -> Retained<NSDate>

The date when the activity was created.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn startDate(&self) -> Option<Retained<NSDate>>

The date when the activity was initially started.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn lastResumeDate(&self) -> Option<Retained<NSDate>>

The date when the activity was last resumed.

  • If the activity was first started, this will be the same as the start date.
  • If the activity was paused and resumed, this will be the date when the activity was resumed.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn endDate(&self) -> Option<Retained<NSDate>>

The date when the activity was officially ended.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn duration(&self) -> NSTimeInterval

Total time elapsed while in active state.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn achievements(&self) -> Retained<NSSet<GKAchievement>>

Available on crate feature GKAchievement only.

All achievements that have been associated with this activity.

Progress of each achievement will be reported when the activity ends.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn leaderboardScores(&self) -> Retained<NSSet<GKLeaderboardScore>>

Available on crate feature GKLeaderboardScore only.

All leaderboard scores that have been associated with this activity.

Scores will be submitted to the leaderboards when the activity ends.

This property is not atomic.

§Safety

This might not be thread-safe.

Source

pub unsafe fn validPartyCodeAlphabet() -> Retained<NSArray<NSString>>

Allowed characters for the party code to be used to share this activity.

Source

pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>

Source

pub unsafe fn startWithDefinition_partyCode_error( activity_definition: &GKGameActivityDefinition, party_code: &NSString, ) -> Result<Retained<GKGameActivity>, Retained<NSError>>

Available on crate feature GKGameActivityDefinition only.

Creates and starts a new game activity with a custom party code.

The party code will be converted to uppercased.

Source

pub unsafe fn startWithDefinition_error( activity_definition: &GKGameActivityDefinition, ) -> Result<Retained<GKGameActivity>, Retained<NSError>>

Available on crate feature GKGameActivityDefinition only.

Initializes and starts a game activity with definition.

Source

pub unsafe fn isValidPartyCode(party_code: &NSString) -> bool

Checks whether a party code is in valid format.

Party code should be two parts of strings with the same length (2-6) connected with a dash, and the code can be either pure digits (0-9), or both parts are uppercased characters from validPartyCodeAlphabet.

  • SeeAlso: validPartyCodeAlphabet for allowed characters.
Source

pub unsafe fn initWithDefinition( this: Allocated<Self>, activity_definition: &GKGameActivityDefinition, ) -> Retained<Self>

Available on crate feature GKGameActivityDefinition only.

Initializes a game activity with definition.

Source

pub unsafe fn start(&self)

Starts the game activity if it is not already started.

Source

pub unsafe fn pause(&self)

Pauses the game activity if it is not already paused.

Source

pub unsafe fn resume(&self)

Resumes the game activity if it was paused.

Source

pub unsafe fn end(&self)

Ends the game activity if it is not already ended.

This will report all associated achievements and submit scores to leaderboards.

Source

pub unsafe fn setScoreOnLeaderboard_toScore_context( &self, leaderboard: &GKLeaderboard, score: NSInteger, context: NSUInteger, )

Available on crate feature GKLeaderboard only.

Set a score of a leaderboard with a context for a player.

The score will be submitted to the leaderboard when the activity ends.

Source

pub unsafe fn setScoreOnLeaderboard_toScore( &self, leaderboard: &GKLeaderboard, score: NSInteger, )

Available on crate feature GKLeaderboard only.

Set a score of a leaderboard for a player.

The score will be submitted to the leaderboard when the activity ends.

Source

pub unsafe fn getScoreOnLeaderboard( &self, leaderboard: &GKLeaderboard, ) -> Option<Retained<GKLeaderboardScore>>

Available on crate features GKLeaderboard and GKLeaderboardScore only.

Get the leaderboard score from a specific leaderboard of the local player if previously set.

Source

pub unsafe fn removeScoresFromLeaderboards( &self, leaderboards: &NSArray<GKLeaderboard>, )

Available on crate feature GKLeaderboard only.

Removes all scores from leaderboards for a player if exist.

Source

pub unsafe fn setProgressOnAchievement_toPercentComplete( &self, achievement: &GKAchievement, percent_complete: c_double, )

Available on crate feature GKAchievement only.

Set a progress for an achievement for a player.

Achievement progress will be reported when the activity ends.

Source

pub unsafe fn setAchievementCompleted(&self, achievement: &GKAchievement)

Available on crate feature GKAchievement only.

Convenience method to set a progress to 100% for an achievement for a player.

Achievement completion will be reported when the activity ends.

Source

pub unsafe fn getProgressOnAchievement( &self, achievement: &GKAchievement, ) -> c_double

Available on crate feature GKAchievement only.

Get the achievement progress from a specific achievement of the local player if previously set.

Returns 0 if the achievement has not been set in the current activity.

Source

pub unsafe fn removeAchievements(&self, achievements: &NSArray<GKAchievement>)

Available on crate feature GKAchievement only.

Removes all achievements if exist.

Source§

impl GKGameActivity

Methods declared on superclass NSObject.

Source

pub unsafe fn new() -> Retained<Self>

Source§

impl GKGameActivity

Multiplayer.

Source

pub unsafe fn makeMatchRequest(&self) -> Option<Retained<GKMatchRequest>>

Available on crate feature GKMatchmaker only.

Makes a GKMatchRequest object with information from the activity, which can be used to find matches for the local player.

Source

pub unsafe fn findMatchWithCompletionHandler( &self, completion_handler: &DynBlock<dyn Fn(*mut GKMatch, *mut NSError)>, )

Available on crate features GKMatch and block2 only.

Use information from the activity to find matches for the local player.

GameKit will create a classic match making request with the activity’s party code and other information, and return the match object in the completion handler or any error that occurred. Error occurs if this activity doesn’t support party code, or has unsupported range of players, which is used to be configured as match request’s minPlayers and maxPlayers.

Source

pub unsafe fn findPlayersForHostedMatchWithCompletionHandler( &self, completion_handler: &DynBlock<dyn Fn(*mut NSArray<GKPlayer>, *mut NSError)>, )

Available on crate features GKBasePlayer and GKPlayer and block2 only.

Use information from the activity to find server hosted players for the local player.

GameKit will create a classic server hosted match making request with the activity’s party code and other information, and return the players in the completion handler or any error that occurred. Error occurs if this activity doesn’t support party code, or has unsupported range of players, which is used to be configured as match request’s minPlayers and maxPlayers.

Source§

impl GKGameActivity

State.

Source

pub unsafe fn checkPendingGameActivityExistenceWithCompletionHandler( completion_handler: &DynBlock<dyn Fn(Bool)>, )

Available on crate feature block2 only.

Checks whether there is a pending activity to handle for the current game.

Methods from Deref<Target = NSObject>§

Source

pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !

Handle messages the object doesn’t recognize.

See Apple’s documentation for details.

Methods from Deref<Target = AnyObject>§

Source

pub fn class(&self) -> &'static AnyClass

Dynamically find the class of this object.

§Panics

May panic if the object is invalid (which may be the case for objects returned from unavailable init/new methods).

§Example

Check that an instance of NSObject has the precise class NSObject.

use objc2::ClassType;
use objc2::runtime::NSObject;

let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Source

pub unsafe fn get_ivar<T>(&self, name: &str) -> &T
where T: Encode,

👎Deprecated: this is difficult to use correctly, use Ivar::load instead.

Use Ivar::load instead.

§Safety

The object must have an instance variable with the given name, and it must be of type T.

See Ivar::load_ptr for details surrounding this.

Source

pub fn downcast_ref<T>(&self) -> Option<&T>
where T: DowncastTarget,

Attempt to downcast the object to a class of type T.

This is the reference-variant. Use Retained::downcast if you want to convert a retained object to another type.

§Mutable classes

Some classes have immutable and mutable variants, such as NSString and NSMutableString.

When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.

So using this method to convert a NSString to a NSMutableString, while not unsound, is generally frowned upon unless you created the string yourself, or the API explicitly documents the string to be mutable.

See Apple’s documentation on mutability and on isKindOfClass: for more details.

§Generic classes

Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.

You can, however, safely downcast to generic collections where all the type-parameters are AnyObject.

§Panics

This works internally by calling isKindOfClass:. That means that the object must have the instance method of that name, and an exception will be thrown (if CoreFoundation is linked) or the process will abort if that is not the case. In the vast majority of cases, you don’t need to worry about this, since both root objects NSObject and NSProxy implement this method.

§Examples

Cast an NSString back and forth from NSObject.

use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};

let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();

Try (and fail) to cast an NSObject to an NSString.

use objc2_foundation::{NSObject, NSString};

let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());

Try to cast to an array of strings.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();

This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.

Downcast when processing each element instead.

use objc2_foundation::{NSArray, NSObject, NSString};

let arr = NSArray::from_retained_slice(&[NSObject::new()]);

for elem in arr {
    if let Some(data) = elem.downcast_ref::<NSString>() {
        // handle `data`
    }
}

Trait Implementations§

Source§

impl AsRef<AnyObject> for GKGameActivity

Source§

fn as_ref(&self) -> &AnyObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<GKGameActivity> for GKGameActivity

Source§

fn as_ref(&self) -> &Self

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl AsRef<NSObject> for GKGameActivity

Source§

fn as_ref(&self) -> &NSObject

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl Borrow<AnyObject> for GKGameActivity

Source§

fn borrow(&self) -> &AnyObject

Immutably borrows from an owned value. Read more
Source§

impl Borrow<NSObject> for GKGameActivity

Source§

fn borrow(&self) -> &NSObject

Immutably borrows from an owned value. Read more
Source§

impl ClassType for GKGameActivity

Source§

const NAME: &'static str = "GKGameActivity"

The name of the Objective-C class that this type represents. Read more
Source§

type Super = NSObject

The superclass of this class. Read more
Source§

type ThreadKind = <<GKGameActivity as ClassType>::Super as ClassType>::ThreadKind

Whether the type can be used from any thread, or from only the main thread. Read more
Source§

fn class() -> &'static AnyClass

Get a reference to the Objective-C class that this type represents. Read more
Source§

fn as_super(&self) -> &Self::Super

Get an immutable reference to the superclass.
Source§

impl Debug for GKGameActivity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for GKGameActivity

Source§

type Target = NSObject

The resulting type after dereferencing.
Source§

fn deref(&self) -> &Self::Target

Dereferences the value.
Source§

impl Hash for GKGameActivity

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for GKGameActivity

Source§

fn retain(&self) -> Retained<Self>
where Self: Sized,

Increment the reference count of the receiver. Read more
Source§

impl NSObjectProtocol for GKGameActivity

Source§

fn isEqual(&self, other: Option<&AnyObject>) -> bool
where Self: Sized + Message,

Check whether the object is equal to an arbitrary other object. Read more
Source§

fn hash(&self) -> usize
where Self: Sized + Message,

An integer that can be used as a table address in a hash table structure. Read more
Source§

fn isKindOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of the class, or one of its subclasses. Read more
Source§

fn is_kind_of<T>(&self) -> bool
where T: ClassType, Self: Sized + Message,

👎Deprecated: use isKindOfClass directly, or cast your objects with AnyObject::downcast_ref
Check if the object is an instance of the class type, or one of its subclasses. Read more
Source§

fn isMemberOfClass(&self, cls: &AnyClass) -> bool
where Self: Sized + Message,

Check if the object is an instance of a specific class, without checking subclasses. Read more
Source§

fn respondsToSelector(&self, aSelector: Sel) -> bool
where Self: Sized + Message,

Check whether the object implements or inherits a method with the given selector. Read more
Source§

fn conformsToProtocol(&self, aProtocol: &AnyProtocol) -> bool
where Self: Sized + Message,

Check whether the object conforms to a given protocol. Read more
Source§

fn description(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object. Read more
Source§

fn debugDescription(&self) -> Retained<NSObject>
where Self: Sized + Message,

A textual representation of the object to use when debugging. Read more
Source§

fn isProxy(&self) -> bool
where Self: Sized + Message,

Check whether the receiver is a subclass of the NSProxy root class instead of the usual NSObject. Read more
Source§

fn retainCount(&self) -> usize
where Self: Sized + Message,

The reference count of the object. Read more
Source§

impl PartialEq for GKGameActivity

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl RefEncode for GKGameActivity

Source§

const ENCODING_REF: Encoding = <NSObject as ::objc2::RefEncode>::ENCODING_REF

The Objective-C type-encoding for a reference of this type. Read more
Source§

impl DowncastTarget for GKGameActivity

Source§

impl Eq for GKGameActivity

Source§

impl Send for GKGameActivity

Source§

impl Sync for GKGameActivity

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T> AnyThread for T
where T: ClassType<ThreadKind = dyn AnyThread + 'a> + ?Sized,

Source§

fn alloc() -> Allocated<Self>
where Self: Sized + ClassType,

Allocate a new instance of the class. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> AutoreleaseSafe for T
where T: ?Sized,