안녕하세요. 게임개발자 놀이터 입니다.
네이버 플러그 분석 포스팅입니다.
분석 내용은 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 |
안녕하세요. 게임개발자 놀이터 입니다.
게임에 빠질수없는 필수 요소인 광고!
유니티 애드 포스팅입니다 ㅎㅎ
Unity 2017 Unity Ads 연동
1. 유니티에서 Window -> Services 를 누릅니다.
2. Services 에서 Ads의 OFF 된 부분을 ON으로 변경합니다.
3. 이젠 플랫폼을 선택할 필요 없이, 바로 우측 상단에 보이는 인터렉션 버튼을 눌러서 활성화 시킵니다.
4. 게임이 13세 미만의 어린이들을 대상으로 한다면 체크한 후 Continue를 누릅니다.
5. 설정이 완료 됬습니다. Test Mode는 말그대로 테스트 할때만 체크해주시면 됩니다.
이제 Go to Dashboard 를 눌러서 창을 열어 줍니다.
6. 만든 프로젝트를 클릭해 들어갑니다.
7. Apple App Store용 광고 Game ID와 Google Play Store 용 광고 Game ID를 기억합니다.
(7자리)
8. 플랫폼을 클릭해서 들어오면 이렇게 광고에 대한 사항을 수정할 수 있습니다.
스플래시 이미지로 할지, 광고로 할지, 광고가 스킵이 되는지 안되는지.. 여러가지 설정이 가능합니다.
여기서 나오는 PLACEMENT ID 또한 필요하니 기억해둡니다.
이제 코드로 돌아옵니다.
9. 저는 2개의 클래스로 Unity Ads를 연동 시켰습니다.
UnityAdsConfig.cs
이곳엔 아까 기억한 Game ID(7자리)와 사용할 PLACEMENT ID를 적어줍니다.
UnityAdsManager.cs
using UnityEngine.Advertisements; 를 찾을 수 없다면, 유니티 프로젝트에서 타겟 플랫폼을 Android나 IOS로 변경해줍니다.
(저는 PC로 두고.. 왜 안나오나 한참 찾았었네요. 애꿎은 using UnityEditor.AdvertisementsSettings; 에서 열심히 삽질했습니다..)
10. 이제 간단한 버튼을 만들어서 UnityAdsManager의 OnRewardVideoClick()을 호출해줍니다.
유니티 에디터에서 아래와 같은 창이 뜬다면 성공입니다!
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D] 유니티 Release 모드로 APK 빌드하기 (0) | 2017.10.25 |
---|---|
[Unity3D] 네이버플러그(NaverCafeSDK) IOS 추가 세팅 방법 (0) | 2017.10.19 |
[Unity3D] NaverPlug SDK 분석 - 08 (리소스 변경 & 네이버 로그인) (0) | 2017.10.16 |
[Unity3D] NaverPlug SDK 분석 - 07 (App Scsheme) (0) | 2017.10.16 |
[Unity3D] NaverPlug SDK 분석 - 06 (동영상 녹화) (0) | 2017.10.16 |
안녕하세요. 게임개발자 놀이터 입니다.
네이버 플러그 분석 포스팅입니다.
분석 내용은 Plug Unity 을 보고 만들었습니다.
감사합니다.
리소스 이미지 변경
네이버 카페 플러그 라이브러리에 포함된 리소스 이미지를 변경할 수 있습니다.
[Android]
Android 환경에서 네이버 카페 플러그 라이브러리에 포함된 리소스 이미지는 다음과 같이 변경할 수 있습니다.
네이버 카페 플러그 라이브러리 파일(.aar 파일)의 압축을 해제합니다.
압축을 해제한 폴더의 /res/drawable-xhdpi 폴더에 있는 이미지를 원하는 이미지로 바꿉니다.
압축을 해제한 폴더를 다시 라이브러리 파일(.aar 파일)로 압축합니다.
새로 압축한 네이버 카페 플러그 라이브러리를 적용해 프로젝트를 빌드합니다.
주의 ) 교체할 이미지는 원본 이미지와 사이즈가 같아야 합니다.
[IOS]
iOS 환경에서 네이버 카페 플러그 라이브러리에 포함된 리소스 이미지는 다음과 같이 변경할 수 있습니다.
NaverCafeSDK.bundle 패키지에 있는 이미지를 원하는 이미지로 바꿉니다.
수정한 패키지를 네이버 카페 플러그 라이브러리에 적용한 다음 프로젝트를 빌드합니다.
네이버 로그인
애플리케이션에서 네이버 아이디로 로그인 기능을 사용합니다
네이버 로그인은 GLinkNaverId.cs를 사용합니다.
init() 메서드
다음 초기화 정보로 네이버 로그인 기능을 초기화합니다.
네이버 아이디로 로그인 개발자 센터에 애플리케이션을 등록하고 받은 클라이언트 아이디
네이버 아이디로 로그인 개발자 센터에 애플리케이션을 등록하고 받은 클라이언트 시크릿
login() 메서드
네이버 아이디로 로그인합니다.
로그인이 완료 되면 리스너가 호출됩니다
[Android]
[IOS]
logout() 메서드
로그아웃합니다
isLogin() 메서드
로그인한 상태인지 확인한다.
getProfile() 메서드
로그인한 사용자의 기본 정보(메일 주소, 별명, 프로필 사진, 생일, 연령대)를 조회한다.
조회할 정보는 리스너를 등록해 설정합니다.
[Android]
[IOS]
감사합니다.
'프로그래밍 > Unity3D' 카테고리의 다른 글
[Unity3D] 네이버플러그(NaverCafeSDK) IOS 추가 세팅 방법 (0) | 2017.10.19 |
---|---|
[Unity3D] Unity 2017 에서 UnityAds 연동하기 (0) | 2017.10.18 |
[Unity3D] NaverPlug SDK 분석 - 07 (App Scsheme) (0) | 2017.10.16 |
[Unity3D] NaverPlug SDK 분석 - 06 (동영상 녹화) (0) | 2017.10.16 |
[Unity3D] NaverPlug SDK 분석 - 05 (위젯 설정) (0) | 2017.10.16 |