visual studio 에서 apple accounts 로 로그인 하는데 아래처럼 에러가 발생되었다.

authentication failure. Reason : {"authType" : "hsa2" }

이중 인증 키까지 잘 패스가 되었는데 떠서 먼가했는데

아래 사이트에서 한번더 인증 절차를 또 거쳐야한다.;;

https://appleid.apple.com

위사이트에서 한번더 로그인 한다 이중 인증을 다시;;

그러면 사이트에서 아래처럼 나오고

 

다시 로그인하면 로그인이 성공한다.

 

이제 프로비저닝 프로파일을 다운받으러....ㅠㅜ

WebView 를 사용해 보니 cache 때문에 반영된 최신 정보를 못가져오는 경우가 있다

아래 코드를 이용하면 항상 cache 를 clear 하고 가져오므로 이런 현상을 막을수 있다.

 

PCL

namespace Project.Controls
{
    public class NoCachedWebView : WebView
    {
    }
}

 

Android

[assembly: ExportRenderer(typeof(NoCachedWebView), typeof(NoCachedWebViewRenderer))]
namespace Project.Droid.Renderer
{
    class NoCachedWebViewRenderer : WebViewRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<WebView> e)
        {
            base.OnElementChanged(e);
            if (Control == null) return;

            Control.ClearCache(true);
            Control.Settings.SetAppCacheEnabled(false);
            Control.Settings.CacheMode = Android.Webkit.CacheModes.NoCache;
        }
    }
}

 

iOS

[assembly: ExportRenderer(typeof(NoCachedWebView), typeof(NoCachedWebViewRenderer))]
namespace Project.iOS.Renderer
{
    class NoCachedWebViewRenderer : WebViewRenderer
    {
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);
            if (Element == null) return;

            NSUrlCache.SharedCache.RemoveAllCachedResponses();
            NSUrlCache.SharedCache.MemoryCapacity = 0;
            NSUrlCache.SharedCache.DiskCapacity = 0;
        }
    }
}

기기별로 유일한 키를 사용하고 싶을때 아래 코드를 이용하면

기기별로 유일한 키를 얻어 사용할수있다.

앱을 삭제했다 다시깔아도 동일한 키가 추출된다.

 

PCL

namespace Project
{
    public interface IDevice
    {
        string GetIdentifier();
    }
}

 

Android

[assembly: Xamarin.Forms.Dependency(typeof(AndroidDevice))]
namespace Project.Droid
{
    public class AndroidDevice : IDevice
    {
        public string GetIdentifier()
        {
            return Secure.GetString(Forms.Context.ContentResolver, Secure.AndroidId);
        }
    }
}

 

iOS

[assembly: Xamarin.Forms.Dependency(typeof(IOSDevice))]
namespace Project.iOS
{
    public class IOSDevice : IDevice
    {
        [DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
        private static extern uint IOServiceGetMatchingService(uint masterPort, IntPtr matching);

        [DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
        private static extern IntPtr IOServiceMatching(string s);

        [DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
        private static extern IntPtr IORegistryEntryCreateCFProperty(uint entry, IntPtr key, IntPtr allocator, uint options);

        [DllImport("/System/Library/Frameworks/IOKit.framework/IOKit")]
        private static extern int IOObjectRelease(uint o);

        public string GetIdentifier()
        {
            string serial = string.Empty;
            uint platformExpert = IOServiceGetMatchingService(0, IOServiceMatching("IOPlatformExpertDevice"));
            if (platformExpert != 0)
            {
                NSString key = (NSString)"IOPlatformSerialNumber";
                IntPtr serialNumber = IORegistryEntryCreateCFProperty(platformExpert, key.Handle, IntPtr.Zero, 0);
                if (serialNumber != IntPtr.Zero)
                {
                    serial = NSString.FromHandle(serialNumber);
                }

                IOObjectRelease(platformExpert);
            }

            return serial;
        }
    }
}

Could not find any available provisioning profiles for iOS. WorkingWithMaps.iOS   

프로젝트 속성의 iOS 번들 서명에서 아래 처럼 자동 프로비저닝 으로 변경하면 된다.

 

incompatible hax module version 3 requires minimum version 4

안드로이드 에뮬을 실행하는데 위와 같은 에러가 발생될때

아래 링크로 들어가 haxm 을 최신버전으로 설치하면 된다.

https://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager-intel-haxm

haxm-windows_v7_2_0.zip

 

"java.exe"이(가) 종료되었습니다(코드:2)

위와 같은 에러가 발생되었다.

아래 처럼 프로젝트 속성의 Android 옵션 의  Multi-Dex 를 사용하도록 설정 을 체크해야한다.

Image 클릭시 이벤트 주는 방법은 아래와 같다

this.Image.GestureRecognizers.Add(new TapGestureRecognizer(메서드명));

this.ActionImage.GestureRecognizers.Add(new TapGestureRecognizer(OnTab));

private void OnTab(View sender, object e)
{
    ...
}

 

 

https://github.com/jsuarezruiz/xamarin-forms-customnavigationpage

 

심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
오류 NU1107 Xamarin.Android.Support.Compat에 대한 버전 충돌이 검색되었습니다. 프로젝트에서 패키지를 직접 참조하여 이 문제를 해결하세요. 
Project.Android -> Xamarin.Android.Support.v7.MediaRouter 27.0.2.1 -> Xamarin.Android.Support.v7.Palette 27.0.2.1 -> Xamarin.Android.Support.Compat (= 27.0.2.1) 
 Project.Android -> MiGong -> Xamarin.Auth 1.6.0.2 -> Xamarin.Android.Support.CustomTabs 25.4.0.2 -> Xamarin.Android.Support.Compat (= 25.4.0.2).    
오류  패키지 복원에 실패했습니다. 'MiGong.Android'에 대한 패키지 변경 내용을 롤백하고 있습니다.   0 
오류  Xamarin.Android.Support.Compat에 대한 버전 충돌이 검색되었습니다. 프로젝트에서 패키지를 직접 참조하여 이 문제를 해결하세요. 
 Project.Android -> Xamarin.Android.Support.v7.MediaRouter 27.0.2.1 -> Xamarin.Android.Support.v7.Palette 27.0.2.1 -> Xamarin.Android.Support.Compat (= 27.0.2.1) 
 Project.Android -> Xamarin.Auth 1.6.0 -> Xamarin.Android.Support.CustomTabs 25.4.0.2 -> Xamarin.Android.Support.Compat (= 25.4.0.2).  

Xamarin.Auth 를 사용하려는데 위와 같은 에러가 발생되었다.

찾아보니 해결방법은 역시 에러 메세지에 있었다.

Android 프로젝트의 Nuget 에서

Xamarin.Android.Support.Compat 을 찾아 설치하고

그다음으로 Xamarin.Android.Support.v7.Palette 을 설치하면된다.

(순서가 바뀌면 설치되지 않는다.)

그리고 다시 android 프로젝트의 Nuget 에서  Xamarin.Auth 를 설치하면 설치가 제대로 된다.

Syncfusion 의 SfDataGrid 를 사용하는데 갑자기 앱 실행시 위와 같은 팝업이 뜨기 시작했다.;
커뮤니티 버전이라 신경을 안썼는데 언제부턴가 적용이 된건지 모르겠지만 버전을 내려도 동일한 증상이 발생되었다.
(신기하게도 기존 배포된 앱들은 팝업이 뜨지 않는다.;;)

해결방법은 아래 링크로 들어가서 키를 얻어야한다.
(먼저 Syncfusion 에 가입이 되어있어야한다.)
아래 링크도 들어가 LinkedIn login 으로 로그인을하면 키가 얻어진다.
https://www.syncfusion.com/downloads/communitylicense

이제 Syncfusion 의 내계정 정보로 들어가보자

위화면에서 Get License Key 를 클릭하면 키 정보를 얻어올수 있다
그리고 아래 링크를 참고하여 코드를 추가하면 된다.

https://help.syncfusion.com/common/essential-studio/licensing/license-key

xamarin forms

public App()
{
//Register Syncfusion license
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR LICENSE KEY");

InitializeComponent();

MainPage = new App1.MainPage();
}

+ Recent posts

티스토리 툴바