'IOS'에 해당되는 글 2건
안녕하세요. 게임개발자 놀이터 입니다.
네이버 플러그 분석 포스팅입니다.
분석 내용은 Plug Unity 을 보고 만들었습니다.
감사합니다.
네이버 플러그 IOS 추가 세팅
네이버 앱으로 로그인 가능하게 하기
네이버 앱으로 로그인 기능을 사용하기 위해선
NCSDKUnityManager.mm 을 열어서
[[NCSDKLoginManager getSharedInstance] setIsNaverAppOauthEnable:YES];
을 추가 해줍니다.
또한, 네이버 앱으로 나갔다 들어오며 로그인이 완료 됬다는 델리 게이트를 받기 위해
openURL 델리게이트를 오버라이드 받습니다.
유니티에서 한번에 처리 하기 위해 Plugin/IOS 에 AppDelegate을 서브클래스로 받는 클래스를 mm파일로 구현합니다
마지막으로 URL Schemes 세팅을 위해 유니티 – PlayerSetting – ios 에서 Supported URL schemes에 네이버 제휴 카페 ios 서비스에 등록한 URL schemes 값을 입력합니다.
이제 네이버 앱으로 로그인이 될것입니다.
PostBuild를 이용하여 XCode 추가 세팅 안하기.
네이버 SDK는 추가해야하는 라이브러리(프레임워크)나 세팅해줘야 하는 값들이 많습니다. 이를 한번에 처리 하기위해 아래와 같은 코드를 클래스를 만들어 Plugin에 추가 해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | using System.IO; using System.Collections.Generic; using UnityEngine; #if UNITY_EDITOR using UnityEditor; using UnityEditor.Callbacks; #if UNITY_IOS using UnityEditor.iOS.Xcode; public static class IOSPostBuild { [PostProcessBuild] public static void OnPostProcessBuild(BuildTarget target, string path) { #region Project.pbxproj { string pbxprojPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj"; PBXProject proj = new PBXProject(); proj.ReadFromString(File.ReadAllText(pbxprojPath)); string buildTarget = proj.TargetGuidByName(PBXProject.GetUnityTargetName()); string destSdkDir = "Libraries/NCSDK"; proj.AddFrameworkToProject(buildTarget, "ReplayKit.framework", false); proj.AddFrameworkToProject(buildTarget, "MobileCoreServices.framework", false); proj.AddFrameworkToProject(buildTarget, "SystemConfiguration.framework", false); proj.AddFrameworkToProject(buildTarget, "MediaPlayer.framework", false); proj.AddFrameworkToProject(buildTarget, "AVFoundation.framework", false); proj.AddFrameworkToProject(buildTarget, "CoreMedia.framework", false); proj.AddFrameworkToProject(buildTarget, "AssetsLibrary.framework", false); proj.AddFrameworkToProject(buildTarget, "Security.framework", false); proj.AddFrameworkToProject(buildTarget, "ImageIO.framework", false); proj.AddFrameworkToProject(buildTarget, "QuartzCore.framework", false); proj.AddFrameworkToProject(buildTarget, "WebKit.framework", false); proj.AddFrameworkToProject(buildTarget, "MediaToolBox.framework", false); proj.AddBuildProperty(buildTarget, "FRAMEWORK_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(buildTarget, "FRAMEWORK_SEARCH_PATHS", "$(SRCROOT)/" + destSdkDir); proj.AddBuildProperty(buildTarget, "LIBRARY_SEARCH_PATHS", "$(inherited)"); proj.AddBuildProperty(buildTarget, "LIBRARY_SEARCH_PATHS", "$(SRCROOT)/" + destSdkDir + "/NaverAuth"); proj.AddBuildProperty(buildTarget, "OTHER_LDFLAGS", "-ObjC"); proj.AddBuildProperty(buildTarget, "OTHER_LDFLAGS", "-all_load"); File.WriteAllText(pbxprojPath, proj.WriteToString()); } #endregion // Read plist var plistPath = Path.Combine(path, "Info.plist"); var plist = new PlistDocument(); plist.ReadFromFile(plistPath); // Update value PlistElementDict rootDict = plist.root; rootDict.SetString("Localization native development region", "Korea"); rootDict.SetString("Privacy - Photo Library Usage Description", "게시글을 작성하기 위해 사용자의 사진에 접근합니다"); // Write plist File.WriteAllText(plistPath, plist.WriteToString()); // } private static void DirectoryCopy (string sourceDirName, string destDirName) { DirectoryInfo dir = new DirectoryInfo (sourceDirName); DirectoryInfo[] dirs = dir.GetDirectories (); if (!dir.Exists) { return; } if (!Directory.Exists (destDirName)) { Directory.CreateDirectory (destDirName); } FileInfo[] files = dir.GetFiles (); foreach (FileInfo file in files) { if(!file.Extension.ToLower().EndsWith("meta")) { string temppath = Path.Combine (destDirName, file.Name); file.CopyTo (temppath, false); } } foreach (DirectoryInfo subdir in dirs) { string temppath = Path.Combine (destDirName, subdir.Name); DirectoryCopy (subdir.FullName, temppath); } } public static void ClearDirectory (string path, bool deleteParent) { if (path != null) { string[] folders = Directory.GetDirectories (path); foreach (string folder in folders) { ClearDirectory (folder, true); } string[] files = Directory.GetFiles (path); foreach (string file in files) { File.Delete (file); } if (deleteParent) { Directory.Delete (path); } } } public static string PathWithPlatformDirSeparators (string path) { if (Path.DirectorySeparatorChar == '/') { return path.Replace ("\\", Path.DirectorySeparatorChar.ToString ()); } else if (Path.DirectorySeparatorChar == '\\') { return path.Replace ("/", Path.DirectorySeparatorChar.ToString ()); } return path; } public static string MacPath (string path) { return path.Replace (@"\", "/"); } } #endif #endif | cs |
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D] 구글 플레이 게임 서비스(Google PlayGameServices) Unity에 연동하기! (0) | 2017.10.30 |
---|---|
[Unity3D] 유니티 Release 모드로 APK 빌드하기 (0) | 2017.10.25 |
[Unity3D] Unity 2017 에서 UnityAds 연동하기 (0) | 2017.10.18 |
[Unity3D] NaverPlug SDK 분석 - 08 (리소스 변경 & 네이버 로그인) (0) | 2017.10.16 |
[Unity3D] NaverPlug SDK 분석 - 07 (App Scsheme) (0) | 2017.10.16 |
안녕하세요. 게임개발자 놀이터 입니다.
오늘은 NaverPlug SDK Unity를 이용한 Android / IOS 연동 방법 에 대해 포스팅 하려합니다~
그럼 바로 들어갑니다!
NaverPlug SDK Unity를 이용한 Android / IOS 연동 방법
IOS 11을 대응 하기 위해 2.52버전으로 다운로드 받습니다.
https://github.com/naver/cafe-sdk-unity
압축을 해제 한 후, lib 안에 있는 Unitypackage를 프로젝트 폴더에 풀어줍니다.
테스트를 위해 Sample 폴더에있는 NCSDK_Sample.Scene을 열어봅니다.
빌드 해봅시다.
Anroid 의 경우, 아무 문제 없이 바로 빌드가 됩니다.
하지만IOS의 경우빌드 전 세팅해야 할 부분이 있습니다.
IOS
l 세로 모드 설정
세로 모드로 진행하는 게임을 개발할 때는 NCSDK/Plugins/iOS 폴더에 있는 NCSDKUnityManager.mm 파일에서
NCSDKManager.setOrientationIsLandscape 속성을 NO
로 설정합니다.
1. NCSDK/Plugins/IOS/NaverCafeSDK.bundle 을 IOS에서 include 되도록 설정해줍니다.
(Two Column Layout 을 사용하고 있다면, 왼쪽 폴더 경로상에서 Bundle을 선택하면 인스펙터에 정보가 나오지않습니다. 오른쪽 파일 창에서 클릭 해줘야 합니다. )
2. NCSDK/Plugins/IOS/ NaverAuth/ NaverAuth.bundle 도 마찬가지로 IOS에서 include 되도록 설정 해줍니다.
3. IOS를 빌드해서 XCODE 로 열어 봅니다.
4. 빌드를 하면 엄청난 에러를 볼 수 있습니다. 이제부터 이 에러들은 해결하기 위해 설정을 할것입니다.
5. Build Settings에 Other Linker Flags 에 –ObjC 를 추가합니다.
6. Build Phases의 Link Binary With Libraries에 다음 라이브러리를 추가합니다. 추가한 라이브러리의 Status는 Required로 설정합니다.
MobileCoreServices.framework
SystemConfiguration.framework
MediaPlayer.framework
AVFoundation.framework
CoreMedia.framework
AssetsLibrary.framework
Security.framework
ImageIO.framework
QuartzCore.framework
Webkit.framework
ReplayKit.framework(라이브러리의 Status를 Optional로 설정합니다)
7. 다시 한번 더 빌드하면 정상적으로 빌드가 되는 것을 확인 하실 수 있습니다.
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D] NaverPlug SDK 분석 - 02 (플러그 시작) (0) | 2017.10.16 |
---|---|
[Unity3D] NaverPlug SDK 분석 - 01 (플러그 초기화) (0) | 2017.10.16 |
[Unity3D] 유니티 협업도구 Unity Collaboration 사용하기 (0) | 2017.09.07 |
XML로 로컬라이징 하기. -1 (0) | 2016.02.29 |
5.3에서 Scene 전환 하는법 // Application.LoadLevel 사용하지않음. (0) | 2016.02.28 |