Skip to content

Commit 9e8e6f6

Browse files
committed
refac: fire callbacks behind native ios ones inside of the main unity thread
1 parent a765b04 commit 9e8e6f6

File tree

1 file changed

+184
-70
lines changed

1 file changed

+184
-70
lines changed

Assets/Adjust/Scripts/AdjustiOS.cs

Lines changed: 184 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -694,192 +694,306 @@ public static void TrackSubsessionEnd(string testingArgument = null)
694694

695695
// MonoPInvokeCallback methods as method parameters
696696
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateIsEnabledGetter))]
697-
private static void IsEnabledGetterMonoPInvoke(bool isEnabled) {
698-
if (appIsEnabledGetterCallbacks != null)
697+
private static void IsEnabledGetterMonoPInvoke(bool isEnabled)
698+
{
699+
if (appIsEnabledGetterCallbacks == null)
700+
{
701+
return;
702+
}
703+
704+
AdjustThreadDispatcher.RunOnMainThread(() =>
699705
{
700706
foreach (Action<bool> callback in appIsEnabledGetterCallbacks)
701707
{
702-
callback(isEnabled);
708+
callback?.Invoke(isEnabled);
703709
}
704710
appIsEnabledGetterCallbacks.Clear();
705-
}
711+
});
706712
}
707713

708714
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateAttributionGetter))]
709-
private static void AttributionGetterMonoPInvoke(string attribution) {
710-
if (appAttributionGetterCallbacks != null)
715+
private static void AttributionGetterMonoPInvoke(string attribution)
716+
{
717+
if (appAttributionGetterCallbacks == null)
718+
{
719+
return;
720+
}
721+
722+
AdjustThreadDispatcher.RunOnMainThread(() =>
711723
{
712724
foreach (Action<AdjustAttribution> callback in appAttributionGetterCallbacks)
713725
{
714-
callback(new AdjustAttribution(attribution));
726+
callback?.Invoke(new AdjustAttribution(attribution));
715727
}
716728
appAttributionGetterCallbacks.Clear();
717-
}
729+
});
718730
}
719731

720732
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateAdidGetter))]
721-
private static void AdidGetterMonoPInvoke(string adid) {
722-
if (appAdidGetterCallbacks != null)
733+
private static void AdidGetterMonoPInvoke(string adid)
734+
{
735+
if (appAdidGetterCallbacks == null)
736+
{
737+
return;
738+
}
739+
740+
AdjustThreadDispatcher.RunOnMainThread(() =>
723741
{
724742
foreach (Action<string> callback in appAdidGetterCallbacks)
725743
{
726-
callback(adid);
744+
callback?.Invoke(adid);
727745
}
728746
appAdidGetterCallbacks.Clear();
729-
}
747+
});
730748
}
731749

732750
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateIdfaGetter))]
733-
private static void IdfaGetterMonoPInvoke(string idfa) {
734-
if (appIdfaGetterCallbacks != null)
751+
private static void IdfaGetterMonoPInvoke(string idfa)
752+
{
753+
if (appIdfaGetterCallbacks == null)
754+
{
755+
return;
756+
}
757+
758+
AdjustThreadDispatcher.RunOnMainThread(() =>
735759
{
736760
foreach (Action<string> callback in appIdfaGetterCallbacks)
737761
{
738-
callback(idfa);
762+
callback?.Invoke(idfa);
739763
}
740764
appIdfaGetterCallbacks.Clear();
741-
}
765+
});
742766
}
743767

744768
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateIdfvGetter))]
745-
private static void IdfvGetterMonoPInvoke(string idfv) {
746-
if (appIdfvGetterCallbacks != null)
769+
private static void IdfvGetterMonoPInvoke(string idfv)
770+
{
771+
if (appIdfvGetterCallbacks == null)
747772
{
748-
foreach (Action<string> callback in appIdfaGetterCallbacks)
773+
return;
774+
}
775+
776+
AdjustThreadDispatcher.RunOnMainThread(() =>
777+
{
778+
foreach (Action<string> callback in appIdfvGetterCallbacks)
749779
{
750-
callback(idfv);
780+
callback?.Invoke(idfv);
751781
}
752782
appIdfvGetterCallbacks.Clear();
753-
}
783+
});
754784
}
755785

756786
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateLastDeeplinkGetter))]
757-
private static void LastDeeplinkGetterMonoPInvoke(string lastDeeplink) {
758-
if (appLastDeeplinkGetterCallbacks != null)
787+
private static void LastDeeplinkGetterMonoPInvoke(string lastDeeplink)
788+
{
789+
if (appLastDeeplinkGetterCallbacks == null)
790+
{
791+
return;
792+
}
793+
794+
AdjustThreadDispatcher.RunOnMainThread(() =>
759795
{
760796
foreach (Action<string> callback in appLastDeeplinkGetterCallbacks)
761797
{
762-
callback(lastDeeplink);
798+
callback?.Invoke(lastDeeplink);
763799
}
764800
appLastDeeplinkGetterCallbacks.Clear();
765-
}
801+
});
766802
}
767803

768804
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateSdkVersionGetter))]
769-
private static void SdkVersionGetterMonoPInvoke(string sdkVersion) {
770-
if (appSdkVersionGetterCallbacks != null)
805+
private static void SdkVersionGetterMonoPInvoke(string sdkVersion)
806+
{
807+
if (appSdkVersionGetterCallbacks == null)
808+
{
809+
return;
810+
}
811+
812+
AdjustThreadDispatcher.RunOnMainThread(() =>
771813
{
772814
foreach (Action<string> callback in appSdkVersionGetterCallbacks)
773815
{
774-
callback(sdkPrefix + "@" + sdkVersion);
816+
callback?.Invoke(sdkPrefix + "@" + sdkVersion);
775817
}
776818
appSdkVersionGetterCallbacks.Clear();
777-
}
819+
});
778820
}
779821

780822
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateAttCallback))]
781-
private static void AttCallbackMonoPInvoke(int status) {
782-
if (appAttCallbacks != null)
823+
private static void AttCallbackMonoPInvoke(int status)
824+
{
825+
if (appAttCallbacks == null)
826+
{
827+
return;
828+
}
829+
830+
AdjustThreadDispatcher.RunOnMainThread(() =>
783831
{
784832
foreach (Action<int> callback in appAttCallbacks)
785833
{
786-
callback(status);
834+
callback?.Invoke(status);
787835
}
788836
appAttCallbacks.Clear();
789-
}
837+
});
790838
}
791839

792840
[AOT.MonoPInvokeCallback(typeof(AdjustDelegatePurchaseVerificationCallback))]
793-
private static void PurchaseVerificationCallbackMonoPInvoke(string verificationResult) {
794-
if (appPurchaseVerificationCallback != null)
841+
private static void PurchaseVerificationCallbackMonoPInvoke(string verificationResult)
842+
{
843+
if (appPurchaseVerificationCallback == null)
795844
{
796-
appPurchaseVerificationCallback(new AdjustPurchaseVerificationResult(verificationResult));
797-
appPurchaseVerificationCallback = null;
845+
return;
798846
}
847+
848+
AdjustThreadDispatcher.RunOnMainThread(() =>
849+
{
850+
appPurchaseVerificationCallback?.Invoke(new AdjustPurchaseVerificationResult(verificationResult));
851+
appPurchaseVerificationCallback = null;
852+
});
799853
}
800854

801855
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateVerifyAndTrackCallback))]
802-
private static void VerifyAndTrackCallbackMonoPInvoke(string verificationResult) {
803-
if (appVerifyAndTrackCallback != null)
856+
private static void VerifyAndTrackCallbackMonoPInvoke(string verificationResult)
857+
{
858+
if (appVerifyAndTrackCallback == null)
804859
{
805-
appVerifyAndTrackCallback(new AdjustPurchaseVerificationResult(verificationResult));
806-
appVerifyAndTrackCallback = null;
860+
return;
807861
}
862+
863+
AdjustThreadDispatcher.RunOnMainThread(() =>
864+
{
865+
appVerifyAndTrackCallback?.Invoke(new AdjustPurchaseVerificationResult(verificationResult));
866+
appVerifyAndTrackCallback = null;
867+
});
808868
}
809869

810870
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateResolvedDeeplinkCallback))]
811-
private static void ResolvedDeeplinkCallbackMonoPInvoke(string deeplink) {
812-
if (appResolvedDeeplinkCallback != null)
871+
private static void ResolvedDeeplinkCallbackMonoPInvoke(string deeplink)
872+
{
873+
if (appResolvedDeeplinkCallback == null)
813874
{
814-
appResolvedDeeplinkCallback(deeplink);
815-
appResolvedDeeplinkCallback = null;
875+
return;
816876
}
877+
878+
AdjustThreadDispatcher.RunOnMainThread(() =>
879+
{
880+
appResolvedDeeplinkCallback?.Invoke(deeplink);
881+
appResolvedDeeplinkCallback = null;
882+
});
817883
}
818884

819885
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateSkanErrorCallback))]
820-
private static void SkanErrorCallbackMonoPInvoke(string error) {
821-
if (appSkanErrorCallback != null)
886+
private static void SkanErrorCallbackMonoPInvoke(string error)
887+
{
888+
if (appSkanErrorCallback == null)
822889
{
823-
appSkanErrorCallback(error);
824-
appSkanErrorCallback = null;
890+
return;
825891
}
892+
893+
AdjustThreadDispatcher.RunOnMainThread(() =>
894+
{
895+
appSkanErrorCallback?.Invoke(error);
896+
appSkanErrorCallback = null;
897+
});
826898
}
827899

828900
// MonoPInvokeCallback methods as subscriptions
829901
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateAttributionCallback))]
830-
private static void AttributionCallbackMonoPInvoke(string attribution) {
831-
if (appAttributionCallback != null)
902+
private static void AttributionCallbackMonoPInvoke(string attribution)
903+
{
904+
if (appAttributionCallback == null)
832905
{
833-
appAttributionCallback(new AdjustAttribution(attribution));
906+
return;
834907
}
908+
909+
AdjustThreadDispatcher.RunOnMainThread(() =>
910+
{
911+
appAttributionCallback(new AdjustAttribution(attribution));
912+
});
835913
}
836914

837915
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateSessionSuccessCallback))]
838-
private static void SessionSuccessCallbackMonoPInvoke(string sessionSuccess) {
839-
if (appSessionSuccessCallback != null)
916+
private static void SessionSuccessCallbackMonoPInvoke(string sessionSuccess)
917+
{
918+
if (appSessionSuccessCallback == null)
840919
{
841-
appSessionSuccessCallback(new AdjustSessionSuccess(sessionSuccess));
920+
return;
842921
}
922+
923+
AdjustThreadDispatcher.RunOnMainThread(() =>
924+
{
925+
appSessionSuccessCallback(new AdjustSessionSuccess(sessionSuccess));
926+
});
843927
}
844928

845929
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateSessionFailureCallback))]
846-
private static void SessionFailureCallbackMonoPInvoke(string sessionFailure) {
847-
if (appSessionFailureCallback != null)
930+
private static void SessionFailureCallbackMonoPInvoke(string sessionFailure)
931+
{
932+
if (appSessionFailureCallback == null)
848933
{
849-
appSessionFailureCallback(new AdjustSessionFailure(sessionFailure));
934+
return;
850935
}
936+
937+
AdjustThreadDispatcher.RunOnMainThread(() =>
938+
{
939+
appSessionFailureCallback(new AdjustSessionFailure(sessionFailure));
940+
});
851941
}
852942

853943
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateEventSuccessCallback))]
854-
private static void EventSuccessCallbackMonoPInvoke(string eventSuccess) {
855-
if (appEventSuccessCallback != null)
944+
private static void EventSuccessCallbackMonoPInvoke(string eventSuccess)
945+
{
946+
if (appEventSuccessCallback == null)
856947
{
857-
appEventSuccessCallback(new AdjustEventSuccess(eventSuccess));
948+
return;
858949
}
950+
951+
AdjustThreadDispatcher.RunOnMainThread(() =>
952+
{
953+
appEventSuccessCallback(new AdjustEventSuccess(eventSuccess));
954+
});
859955
}
860956

861957
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateEventFailureCallback))]
862-
private static void EventFailureCallbackMonoPInvoke(string eventFailure) {
863-
if (appEventFailureCallback != null)
958+
private static void EventFailureCallbackMonoPInvoke(string eventFailure)
959+
{
960+
if (appEventFailureCallback == null)
864961
{
865-
appEventFailureCallback(new AdjustEventFailure(eventFailure));
962+
return;
866963
}
964+
965+
AdjustThreadDispatcher.RunOnMainThread(() =>
966+
{
967+
appEventFailureCallback(new AdjustEventFailure(eventFailure));
968+
});
867969
}
868970

869971
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateDeferredDeeplinkCallback))]
870-
private static void DeferredDeeplinkCallbackMonoPInvoke(string deeplink) {
871-
if (appDeferredDeeplinkCallback != null)
972+
private static void DeferredDeeplinkCallbackMonoPInvoke(string deeplink)
973+
{
974+
if (appDeferredDeeplinkCallback == null)
872975
{
873-
appDeferredDeeplinkCallback(deeplink);
976+
return;
874977
}
978+
979+
AdjustThreadDispatcher.RunOnMainThread(() =>
980+
{
981+
appDeferredDeeplinkCallback(deeplink);
982+
});
875983
}
876984

877985
[AOT.MonoPInvokeCallback(typeof(AdjustDelegateSkanUpdatedCallback))]
878-
private static void SkanUpdatedCallbackMonoPInvoke(string skanData) {
879-
if (appSkanUpdatedCallback != null)
986+
private static void SkanUpdatedCallbackMonoPInvoke(string skanData)
987+
{
988+
if (appSkanUpdatedCallback == null)
880989
{
881-
appSkanUpdatedCallback(AdjustUtils.GetSkanUpdateDataDictionary(skanData));
990+
return;
882991
}
992+
993+
AdjustThreadDispatcher.RunOnMainThread(() =>
994+
{
995+
appSkanUpdatedCallback?.Invoke(AdjustUtils.GetSkanUpdateDataDictionary(skanData));
996+
});
883997
}
884998
}
885999
#endif

0 commit comments

Comments
 (0)