Skip to content
This repository has been archived by the owner on Dec 4, 2024. It is now read-only.

Commit

Permalink
feat: Add MAUI Support
Browse files Browse the repository at this point in the history
  • Loading branch information
BrandonStalnaker committed Aug 7, 2024
1 parent 0a10c8c commit 9a0628b
Show file tree
Hide file tree
Showing 54 changed files with 6,595 additions and 8 deletions.
1,086 changes: 1,086 additions & 0 deletions Bindings/mParticle.MAUI.iOSBinding/ApiDefinition.cs

Large diffs are not rendered by default.

235 changes: 235 additions & 0 deletions Bindings/mParticle.MAUI.iOSBinding/StructsAndEnums.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
using System;
using ObjCRuntime;

namespace mParticle.MAUI.iOSBinding {

[Native]
public enum MPEnvironment : long
{
AutoDetect = 0,
Development,
Production
}

[Native]
public enum MPEventType : long
{
Navigation = 1,
Location = 2,
Search = 3,
Transaction = 4,
UserContent = 5,
UserPreference = 6,
Social = 7,
Other = 8,
AddToCart = 10,
RemoveFromCart = 11,
Checkout = 12,
CheckoutOption = 13,
Click = 14,
ViewDetail = 15,
Purchase = 16,
Refund = 17,
PromotionView = 18,
PromotionClick = 19,
AddToWishlist = 20,
RemoveFromWishlist = 21,
Impression = 22
}

[Native]
public enum MPInstallationType : long
{
Autodetect = 0,
KnownInstall,
KnownUpgrade,
KnownSameVersion
}

[Native]
public enum MPLocationAuthorizationRequest : long
{
Always = 0,
WhenInUse
}

[Native]
public enum MPProductEvent : long
{
View = 0,
AddedToWishList,
RemovedFromWishList,
AddedToCart,
RemovedFromCart
}

[Native]
public enum MPSurveyProvider : long
{
MPSurveyProviderForesee = 64
}

[Native]
public enum MPATTAuthorizationStatus : long
{
MPATTAuthorizationStatusNotDetermined = 0,
MPATTAuthorizationStatusRestricted = 1,
MPATTAuthorizationStatusDenied = 2,
MPATTAuthorizationStatusAuthorized = 3
}

[Native]
public enum MPUserIdentity : long
{
MPUserIdentityOther = 0,
MPUserIdentityCustomerId = 1,
MPUserIdentityFacebook = 2,
MPUserIdentityTwitter = 3,
MPUserIdentityGoogle = 4,
MPUserIdentityMicrosoft = 5,
MPUserIdentityYahoo = 6,
MPUserIdentityEmail = 7,
MPUserIdentityAlias = 8,
MPUserIdentityFacebookCustomAudienceId = 9,
MPUserIdentityOther2 = 10,
MPUserIdentityOther3 = 11,
MPUserIdentityOther4 = 12,
MPUserIdentityOther5 = 13,
MPUserIdentityOther6 = 14,
MPUserIdentityOther7 = 15,
MPUserIdentityOther8 = 16,
MPUserIdentityOther9 = 17,
MPUserIdentityOther10 = 18,
MPUserIdentityMobileNumber = 19,
MPUserIdentityPhoneNumber2 = 20,
MPUserIdentityPhoneNumber3 = 21,
MPUserIdentityIOSAdvertiserId = 22,
MPUserIdentityIOSVendorId = 23,
MPUserIdentityPushToken = 24,
MPUserIdentityDeviceApplicationStamp = 25
}

[Native]
public enum MPKitInstance : long
{
UrbanAirship = 25,
Appboy = 28,
Tune = 32,
Kochava = 37,
ComScore = 39,
Kahuna = 56,
Nielsen = 63,
Foresee = 64,
Adjust = 68,
BranchMetrics = 80,
Flurry = 83,
Localytics = 84,
Apteligent = 86,
Crittercism = 86,
Wootric = 90,
AppsFlyer = 92,
Apptentive = 97,
Leanplum = 98,
Primer = 100,
Apptimize = 105,
RevealMobile = 112,
Radar = 117,
Skyhook = 121,
Iterable = 1003,
Button = 1022
}

[Native]
public enum MPILogLevel : long
{
None = 0,
Error,
Warning,
Debug,
Verbose
}

[Native]
public enum MPMessageType : long
{
Unknown = 0,
SessionStart = 1,
SessionEnd = 2,
ScreenView = 3,
Event = 4,
CrashReport = 5,
OptOut = 6,
FirstRun = 7,
PreAttribution = 8,
PushRegistration = 9,
AppStateTransition = 10,
PushNotification = 11,
NetworkPerformance = 12,
Breadcrumb = 13,
Profile = 14,
PushNotificatiolongeraction = 15,
CommerceEvent = 16,
UserAttributeChange = 17,
UserIdentityChange = 18
}

[Native]
public enum MPCommerceEventAction : long
{
AddToCart = 0,
RemoveFromCart,
AddToWishList,
RemoveFromWishlist,
Checkout,
CheckoutOptions,
Click,
ViewDetail,
Purchase,
Refund
}

[Native]
public enum MPCommerceInstruction : long
{
Event = 0,
Transaction
}

[Native]
public enum MPCommerceEventKind : long
{
Unknown = 0,
Product = 1,
Promotion,
Impression
}

[Native]
public enum MPKitReturnCode : long
{
Success = 0,
Fail,
CannotExecute,
Unavailable,
IncorrectProductVersion,
RequirementsNotMet
}

[Native]
public enum MPPromotionAction : long
{
Click = 0,
View
}

//This was added manually.
[Native]
public enum MPSegmentMembershipAction : long
{
MPSegmentMembershipActionAdd = 1,
MPSegmentMembershipActionDrop
}

}


Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-ios</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>true</ImplicitUsings>
<IsBindingProject>true</IsBindingProject>
</PropertyGroup>

<ItemGroup>
<ObjcBindingApiDefinition Include="ApiDefinition.cs" />
<ObjcBindingCoreSource Include="StructsAndEnums.cs" />
</ItemGroup>
<ItemGroup>
<NativeReference Include="mParticle_Apple_SDK.framework">
<Kind>Framework</Kind>
<SmartLink>False</SmartLink>
</NativeReference>
</ItemGroup>
<ItemGroup>
<None Remove="mParticle_Apple_SDK.framework\mParticle_Apple_SDK" />
<None Remove="mParticle_Apple_SDK.framework\Modules\module.modulemap" />
<None Remove="mParticle_Apple_SDK.framework\Info.plist" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPEvent.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPBaseEvent.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPForwardRecord.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPKitProtocol.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\mParticle.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPExtensionProtocol.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\FilteredMParticleUser.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPListenerProtocol.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPPromotion.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPGDPRConsent.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPKitAPI.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPTransactionAttributes.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPCommerceEventInstruction.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPListenerController.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPIdentityApi.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPCCPAConsent.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPUserSegments.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\NSDictionary+MPCaseInsensitive.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MParticleUser.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\NSArray+MPCaseInsensitive.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPCommerceEvent.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPAliasResponse.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPIHasher.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPIdentityApiRequest.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPAliasRequest.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPDateFormatter.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\FilteredMPIdentityApiRequest.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPEnums.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPKitExecStatus.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPCommerceEvent+Dictionary.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPConsentState.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPKitRegister.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPProduct+Dictionary.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPProduct.h" />
<None Remove="mParticle_Apple_SDK.framework\Headers\MPTransactionAttributes+Dictionary.h" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
//
// FilteredMPIdentityApiRequest.h
//

#import <Foundation/Foundation.h>
#import "FilteredMParticleUser.h"

NS_ASSUME_NONNULL_BEGIN
@class MPIdentityApiRequest;

/**
A filtered version of the identity request object for sending to kits
*/
@interface FilteredMPIdentityApiRequest : NSObject

@property (nonatomic, strong, nullable, readonly) NSString *email;
@property (nonatomic, strong, nullable, readonly) NSString *customerId;
@property (nonatomic, strong, nullable, readonly) NSDictionary<NSNumber *, NSString *> *userIdentities;

- (instancetype)initWithIdentityRequest:(MPIdentityApiRequest *)request kitConfiguration:(MPKitConfiguration *)kitConfiguration;

@end

NS_ASSUME_NONNULL_END
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// FilteredMParticleUser.h
//

#import <Foundation/Foundation.h>

@class MParticleUser;
@class MPKitConfiguration;

@interface FilteredMParticleUser : NSObject

@property(readonly, strong, nonnull) NSNumber *userId;

/**
Returns whether this user is currently logged in
*/
@property(readonly) BOOL isLoggedIn;

/**
Gets current user identities (readonly)
@returns A dictionary containing the collection of user identities
@see MPUserIdentity
*/
@property (readonly, strong, nonnull) NSDictionary<NSNumber *, NSString *> *userIdentities;

/**
Gets all user attributes.
@returns A dictionary containing the collection of user attributes.
*/
@property (readonly, strong, nonnull) NSDictionary<NSString *, id> *userAttributes;

- (instancetype _Nonnull )initWithMParticleUser:(MParticleUser *_Nonnull)user kitConfiguration:(MPKitConfiguration *_Nonnull)kitConfiguration;

@end
Loading

0 comments on commit 9a0628b

Please sign in to comment.