public static WTFeatures ConvertFeatures(Features featuresMask)
        {
            WTFeatures iOSFeatures = 0;

            if ((featuresMask & Features.Geo) == Features.Geo)
            {
                iOSFeatures |= WTFeatures.WTFeature_Geo;
            }
            if ((featuresMask & Features.ImageTracking) == Features.ImageTracking)
            {
                iOSFeatures |= WTFeatures.WTFeature_ImageTracking;
            }
            if ((featuresMask & Features.InstantTracking) == Features.InstantTracking)
            {
                iOSFeatures |= WTFeatures.WTFeature_InstantTracking;
            }
            if ((featuresMask & Features.ObjectTracking) == Features.ObjectTracking)
            {
                iOSFeatures |= WTFeatures.WTFeature_ObjectTracking;
            }
            if ((featuresMask & Features.PhotoLibraryScreenshotImport) == Features.PhotoLibraryScreenshotImport)
            {
                iOSFeatures |= WTFeatures.WTFeature_PhotoLibraryScreenshotImport;
            }

            return(iOSFeatures);
        }
Пример #2
0
        private void getWikitudePermissions()
        {
            WTFeatures requiredFeatures = WTFeatures.Geo | WTFeatures.WTFeature_InstantTracking;

            ArExperienceAuthorizationController.AuthorizeRestricedAPIAccess(m_AuthorizationRequestManager, requiredFeatures, () =>
            {
                autoConnect();
            }, (UIAlertController alertController) =>
            {
                Alert.Display("Permissions Denied", "You cannot proceed without granting permissions", this, (r) => Environment.Exit(0));
            });
        }
Пример #3
0
        public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
        {
            ArExperience selectedArExperience = arExperienceGroup.ArExperiences[indexPath.Row];
            WTFeatures   requiredFeatures     = iOSArExperienceConverter.ConvertFeatures(selectedArExperience.FeaturesMask);

            ArExperienceAuthorizationController.AuthorizeRestricedAPIAccess(authorizationRequestManager, requiredFeatures, () => {
                ArExperienceViewController arExperienceViewController = new ArExperienceViewController(selectedArExperience);
                NavigationController.PushViewController(arExperienceViewController, true);
            }, (UIAlertController alertController) => {
                tableView.DeselectRow(indexPath, true);
                PresentViewController(alertController, true, null);
            });
        }
Пример #4
0
        public static void AuthorizeRestricedAPIAccess(WTAuthorizationRequestManager authorizationRequestManager,
                                                       WTFeatures requiredFeatures, Action successHandler, Action <UIAlertController> errorHandler)
        {
            if (!authorizationRequestManager.RequestingRestrictedAppleiOSSDKAPIAuthorization)
            {
                NSOrderedSet <NSNumber> restrictedAppleiOSSDKAPIs = WTAuthorizationRequestManager
                                                                    .RestrictedAppleiOSSDKAPIAuthorizationsForRequiredFeatures(requiredFeatures);

                authorizationRequestManager.RequestRestrictedAppleiOSSDKAPIAuthorization(restrictedAppleiOSSDKAPIs,
                                                                                         (bool success, NSError error) =>
                {
                    if (success)
                    {
                        successHandler();
                    }
                    else
                    {
                        NSDictionary unauthorizedAPIInfo = (NSDictionary)error.UserInfo.ObjectForKey(WTAuthorizationRequestManager.WTUnauthorizedAppleiOSSDKAPIsKey);

                        string detailedAuthorizationErrorLogMessage = "The following authorization states do not meet the requirements: ";
                        string missingAuthorizations = "In order to use the Wikitude SDK, please grant access to the following:";
                        foreach (NSString unauthorizedAPIKey in unauthorizedAPIInfo.Keys)
                        {
                            int authorizationStatus = Int32.Parse(unauthorizedAPIInfo.ObjectForKey(unauthorizedAPIKey).ToString());
                            detailedAuthorizationErrorLogMessage += "\n" + unauthorizedAPIKey.ToString() + " = " + WTAuthorizationRequestManager.StringFromAuthorizationStatusForUnauthorizedAppleiOSSDKAPI(authorizationStatus, unauthorizedAPIKey);
                            missingAuthorizations += "\n* " + WTAuthorizationRequestManager.HumanReadableDescriptionForUnauthorizedAppleiOSSDKAPI(unauthorizedAPIKey);
                        }

                        Console.WriteLine(detailedAuthorizationErrorLogMessage);

                        UIAlertController settingsAlertController = UIAlertController.Create("Required API authorizations missing", missingAuthorizations, UIAlertControllerStyle.Alert);
                        settingsAlertController.AddAction(UIAlertAction.Create("Open Settings", UIAlertActionStyle.Default, (UIAlertAction action) =>
                        {
                            UIApplication.SharedApplication.OpenUrl(NSUrl.FromString(UIApplication.OpenSettingsUrlString));
                        }));
                        settingsAlertController.AddAction(UIAlertAction.Create("NO", UIAlertActionStyle.Destructive, null));

                        errorHandler(settingsAlertController);
                    }
                });
            }
        }
        public static WTFeatures ConvertFeatures(Features featuresMask)
        {
            WTFeatures iOSFeatures = 0;

            if ((featuresMask & Features.ImageTracking) == Features.ImageTracking)
            {
                iOSFeatures |= WTFeatures.WTFeature_ImageTracking;
            }
            if ((featuresMask & Features.ObjectTracking) == Features.ObjectTracking)
            {
                iOSFeatures |= WTFeatures.WTFeature_ObjectTracking;
            }
            if ((featuresMask & Features.InstantTracking) == Features.InstantTracking)
            {
                iOSFeatures |= WTFeatures.WTFeature_InstantTracking;
            }
            if ((featuresMask & Features.Geo) == Features.Geo)
            {
                iOSFeatures |= WTFeatures.WTFeature_Geo;
            }

            return(iOSFeatures);
        }