NMADeviceInformation
public class NMADeviceInformation : NSObject, DictionaryConvertible
The object containing information of the device where the SDK is running.
For nevisFIDO to be able to generate encrypted out-of-band payloads that can only be
decrypted by your application, an NMADeviceInformation
must be provided during registration.
During registration you must provide the name
and optionally the
fcmRegistrationToken
. The other information exposed by the NMADeviceInformation
(deviceId
and idUsernamePairs
) are generated by the SDK
and are not required during registration.
For nevisFIDO to be able to dispatch tokens using the Firebase Cloud Messaging infrastructure, the device information
fcmRegistrationToken
must be filled with the token (as defined by
Firebase).
This registration token is associated with the mobile device receiving the push notifications.
There is a single NMADeviceInformation
for all accounts. It is created when the first successful registration is completed,
and it is deleted when the last authenticator (and thus the last account) is removed (using the NMADeregistration
or deleteAuthenticator(username:aaid:)
.
When an NMADeviceInformation
is provided in a registration operation, and an NMADeviceInformation
is already defined
(that is, there is already a registered authenticator), the provided NMADeviceInformation
will be ignored. The device information
contents (name and FCM registration token) can be changed using an NMADeviceInformationChange
.
The NMADeviceInformation
data is stored in nevisIDM as generic credentials. For each account registered, a generic credential
will be created in nevisIDM containing the device information. These generic credentials are named dispatch targets in the nevisFIDO terminology.
The following example creates an NMADeviceInformation
using a phone description (that can be provided by the end user,
since this is used for the end user to identify the mobile device) and a Firebase registration token:
- (NMADeviceInformation *)createDeviceInformation:(NSString *)phoneDescription
firebaseRegistrationToken:(NSString *)token {
return [[NMADeviceInformation alloc] initWithName:phoneDescription
fcmRegistrationToken:token];
}
-
A user-friendly name to identify this device. The name can be modified using
NMADeviceInformationChange
Note that the name of the
NMADeviceInformation
must be unique for a given user (i.e. a user cannot have twoNMADeviceInformation
s with the same name in the server). Trying to use an existing name for anNMADeviceInformation
during registration results in anNMAOperationError
error. If an existing name is provided when invokingNMADeviceInformationChange/execute()
, then anNMADeviceInformationChangeError
with anNameAlreadyExists
is returned as error.The name is stored in nevisIDM in the
fidouaf_name
attribute of the generic credentials containing the dispatch target information.Declaration
Swift
@objc public let name: String
-
The Firebase Cloud Messaging“ registration token. Since the Firebase registration token can change, this can be modified using
NMADeviceInformationChange
.If push notification is disabled, (for instance when all the out-of-band is done using QR codes or deep links) no Firebase Cloud Messaging registration token value is required.
The Firebase Cloud Messaging registration token is stored in nevisIDM in the
fidouaf_target
attribute of the generic credentials containing the dispatch target information.Declaration
Swift
@objc public let fcmRegistrationToken: String?
-
The identifier that is generated for the device during registration. It is a
String
that is used in the backend to associate FIDO UAF credentials with a device.This property gives back an empty
String
by default, because its value is not required whenNMADeviceInformation
is provided during registration. TheNMADeviceInformation
returneddeviceInformation
contains a valid device identifier.The device ID is stored in nevisIDM in the
fidouaf_device_id
attribute of the generic credentials containing the dispatch target information.Declaration
Swift
@objc public let deviceId: String
-
The identifiers of the generic credentials containing the dispatch target information in nevisIDM and the associated username.
Declaration
Swift
@objc public let idUsernamePairs: Set<NMAIdUsernamePair>
-
Creates a new
NMADeviceInformation
instance.Declaration
Swift
@objc public init(name: String, fcmRegistrationToken: String? = nil)
Parameters
name
A user-friendly name to identify this device.
fcmRegistrationToken
An optional Firebase Cloud Messaging registration token.
-
Declaration
Swift
public required convenience init?(dictionary: [String : Any])
-
Declaration
Swift
public var asDictionary: [String : Any]? { get }