// // PFInstallation.h // // Copyright 2011-present Parse Inc. All rights reserved. // #import #if TARGET_OS_IPHONE #import #import #import #else #import #import #import #endif PF_ASSUME_NONNULL_BEGIN /*! A Parse Framework Installation Object that is a local representation of an installation persisted to the Parse cloud. This class is a subclass of a , and retains the same functionality of a PFObject, but also extends it with installation-specific fields and related immutability and validity checks. A valid `PFInstallation` can only be instantiated via <[PFInstallation currentInstallation]> because the required identifier fields are readonly. The and fields are also readonly properties which are automatically updated to match the device's time zone and application badge when the `PFInstallation` is saved, thus these fields might not reflect the latest device state if the installation has not recently been saved. `PFInstallation` objects which have a valid and are saved to the Parse cloud can be used to target push notifications. */ @interface PFInstallation : PFObject ///-------------------------------------- /// @name Accessing the Current Installation ///-------------------------------------- /*! @abstract Gets the currently-running installation from disk and returns an instance of it. @discussion If this installation is not stored on disk, returns a `PFInstallation` with and fields set to those of the current installation. @result Returns a `PFInstallation` that represents the currently-running installation. */ + (instancetype)currentInstallation; ///-------------------------------------- /// @name Installation Properties ///-------------------------------------- /*! @abstract The device type for the `PFInstallation`. */ @property (nonatomic, strong, readonly) NSString *deviceType; /*! @abstract The installationId for the `PFInstallation`. */ @property (nonatomic, strong, readonly) NSString *installationId; /*! @abstract The device token for the `PFInstallation`. */ @property (PF_NULLABLE_PROPERTY nonatomic, strong) NSString *deviceToken; /*! @abstract The badge for the `PFInstallation`. */ @property (nonatomic, assign) NSInteger badge; /*! @abstract The name of the time zone for the `PFInstallation`. */ @property (PF_NULLABLE_PROPERTY nonatomic, strong, readonly) NSString *timeZone; /*! @abstract The channels for the `PFInstallation`. */ @property (PF_NULLABLE_PROPERTY nonatomic, strong) NSArray *channels; /*! @abstract Sets the device token string property from an `NSData`-encoded token. @param deviceTokenData A token that identifies the device. */ - (void)setDeviceTokenFromData:(PF_NULLABLE NSData *)deviceTokenData; ///-------------------------------------- /// @name Querying for Installations ///-------------------------------------- /*! @abstract Creates a for `PFInstallation` objects. @discussion Only the following types of queries are allowed for installations: - `[query getObjectWithId:]` - `[query whereKey:@"installationId" equalTo:]` - `[query whereKey:@"installationId" matchesKey: inQuery:]` You can add additional query conditions, but one of the above must appear as a top-level `AND` clause in the query. */ + (PF_NULLABLE PFQuery *)query; @end PF_ASSUME_NONNULL_END