블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2806)
Unity3D (862)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (234)
협업 (61)
3DS Max (3)
Game (12)
Utility (140)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (16)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

2020-02-18 01:09:43.567 4919-11220/? E/SignInAuthenticator: ****
    **** APP NOT CORRECTLY CONFIGURED TO USE GOOGLE PLAY GAME SERVICES
    **** This is usually caused by one of these reasons:
    **** (1) Your package name and certificate fingerprint do not match
    ****     the client ID you registered in Developer Console.
    **** (2) Your App ID was incorrectly entered.
    **** (3) Your game settings have not been published and you are 
    ****     trying to log in with an account that is not listed as
    ****     a test account.
    ****
    **** To help you debug, here is the information about this app
    **** Package name         : 모자이크
    **** Cert SHA1 fingerprint: 모자이크
    **** App ID from manifest : 모자이크
    ****
    **** Check that the above information matches your setup in 
    **** Developer Console. Also, check that you're logging in with the
    **** right account (it should be listed in the Testers section if
    **** your project is not yet published).
    ****
    **** For more information, refer to the troubleshooting guide:
    ****   http://developers.google.com/games/services/android/troubleshooting
    ****

--------------------------------------------------------------------------------------

로그인 잘 되던게 구글콘솔(스토어) 등록하면서 갑자기 위와 같은 에러를 내면서 구글플레이게임 로그인이 안됨.

 

  [해결방법]

1. 우선 구글 플레이 콘솔-My App-개발 도구-서비스 및 API-Google Play 게임 서비스-'Google Play 게임 서비스 활성화'를 해줘야 된다고 한다.

2. 1.에서 모든 셋팅을 다 하고, '게임 출시' 까지 한다.('게임 출시'라서 사람 헷갈리게 하는데 Google Play 게임 서비스 출시이다. 앱 출시가 아님)

 

3. '구글 API 콘솔'(https://console.developers.google.com)로 이동해서 API 및 서비스-사용자 인증 정보-OAuth 2.0 클라이언트 ID-My App 클릭

 

4. 구글 API 콘솔 SHA-1과, 구글 플레이 콘솔-앱 서명-업로드 인증서 SHA-1이 같은지 확인

    (KeyStore를 업로드 했다면 콘솔의 업로드 인증서 SHA-1과 KeyStore SHA-1이 같아야 함)

 

5. 3.의 구글 API 콘솔에 등록된 SHA-1이 업로드 인증서 SHA-1과 다르다면 업로드 인증서 SHA-1으로 입력해서 저장.

 

6. 앱에서 정상 로그인 확인.

 

 

P.s. 나의 케이스이니 참조만 하세요.

 

 

[참조1] http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=47275

[참조2] https://www.youtube.com/watch?v=BMGGwjqQRns

반응형
Posted by blueasa
, |

Google play console에 처음 apk를 등록하는 분들이라면 한번씩 겪게되는 상황이 있습니다. 바로 keystore 생성을 하지않아 apk 업로드 실패하는 상황이죠....

 

유니티 개발자들은 별 어려움 없이 몇가지 작업으로 keystore를 생성할 수 있습니다.

 

1. File -> BuildSettings -> PlayerSetting ->Publishing setting 으로 이동하면 다음과 같은 화면을 볼 수 있습니다.

 

 

 

우리는 새 키스토어를 생성하려는 것이기 때문에

2. Create a new keystore를 눌러줍니다.

 

3. Keystore password

비밀번호를 입력하고 밑에같에 확인란 까지 같이 입력해줍니다.

 

4. Browse Keystore를 눌러줍니다. 

 

네... 몇몇분들도 저랑 같은 생각을 하시지 않을까합니다. 새로 생성한는데 '왜 키스토어파일을 찾냐..?'

 

직접해본결과 create a new keystore를 체크한 상태에서는 파일을 찾는게아니라.. 새로생성될 keystore 파일의 저장 경로와 저장될 파일명을 세팅하는 것이었습니다. 

(헤깔리게 하지마 ㅜㅜㅜㅜㅜ)

 

 

 

5.Key Alias 생성

위에서 keystore 비밀번호 입력 까지 정삭적으로 끝냈다면 Alias를 새로 생성할 수 있습니다.
Unsignes를 눌러 Create new key를 눌러줍니다.

 

6. 정보 입력

 

Alias - 아무 이름 지어서 적어 넣습니다.

password - 비밀번호 안까먹을 만한걸로 적어줍니다.

confirm - 비밀번호 재확인

validity( years) - 50년은 충분한 시간이라고 생각됩니다. 그냥 내비둡니다.

 

나머지 밑에는 건너뛰고 
 country code 만 Ko로 적고  create Key를 눌러 생성을 하였습니다.

 

이제 새로생성한 keystore와 key를 세팅해주고 비밀번호를 정상적으로 입력해줍니다.

 

7. apk 생성

네 이제 끝까지 왔습니다. 

 

 

8. apk 업로드 

 

위의 과정을 잘 따라 하셨다면 정상적으로 업로드된 화면을 볼 수 있으셨을 것 입니다. 



출처: https://enjoylifeforme.tistory.com/entry/Unity-Keystore-생성 [즐거운하룽]

 

[Unity] Keystore 생성

[Unity] Keystore 생성 Google play console에 처음 apk를 등록하는 분들이라면 한번씩 겪게되는 상황이 있습니다. 바로 keystore 생성을 하지않아 apk 업로드 실패하는 상황이죠.... 유니티 개발자들은 별 어려움..

enjoylifeforme.tistory.com

 

 

반응형
Posted by blueasa
, |

 

[링크]

https://lib.dasony.net/7

 

[NATIVE, ANDROID] Local Notification(로컬 알림) 유니티 플러그인

개요 유니티에서 네이티브 알림 기능을 iOS 만 제공하고 있습니다. 안드로이드에서 로컬 알림을 이용하려면 플러그인을 직접 제작하거나 다른 사람이 만들어 둔 플러그인을 사용해야 합니다. 이번에 다소니닷넷에..

lib.dasony.net

 

반응형
Posted by blueasa
, |

Unity Local Notification (For android)

This repository allows to send local notification from unity project on android devices.

Features

  • you can send local notification in android
  • you can schedule sending notification for some time in future
  • you can send notification having big picture style

Issues

  • not all android notification features are supported

Sample code

Publisher publisher = PublisherManager.Instance.CreatePublisher(channelId, channelName, channelDescription); // put your icon png file in Plugins/Android/UnityLocalNotification/res/drawable Notification notification = new Notification() .SmallIconName("test_icon") .Title("My notif title") .Message("This is a test notification message"); publisher.Publish(notification);

Screenshots

Unity asset

Unity local notification asset

Class diagram

class diagram

 

 

[출처] https://unitylist.com/p/g72/Unity-Local-Notification

 

Unity Local Notification

Send Android local notification from unity project source code

unitylist.com

 

반응형
Posted by blueasa
, |

[Link] https://jinreo.tistory.com/12

 

Unity 에서 Android Permission 삭제 관련

- READ_PHONE_STATE 한글로 보면 전화걸기 뭐 이런 식으로 설명하고 해당 권한을 받는다. (make and manage phone call) 유니티상에서 SystemInfo.deviceUniqueIdentifier를 사용하면 자동으로 추가되는데 해당 코..

jinreo.tistory.com

 

반응형
Posted by blueasa
, |

READ_PHONE_STATE Permission isn’t in my Manifest or Plugins!

Unity automatically adds the READ_PHONE_STATE permission into builds when either:

  • Your scripts contain code which require the permission.
  • The target SDK version isn’t set (or set below 4) which causes the manifest merger to assume the SDK version is lower than 4 and the system will implicitly grant the READ_PHONE_STATE permission to the app. (in later versions of Unity 5 and Unity 2017 the target SDK version is now set in the editor making managing it much easier)
  • You have a plugin in your project which has its own manifest file requesting the permission (the manifest can be contained within your jar or aar files, they’re not always simply in your project) – Note that if a plugin is requesting a permission then it’s probably required and may cause issues if removed, check the plugin documentation if you’re unsure!

Code which causes Unity to automatically add the permission

In the case of your scripts containing code which need the permission. Unity automatically adds the permission when using functions which require it.

Some SystemInfo properties such as SystemInfo.deviceUniqueIdentifier require the READ_PHONE_STATE permission so referencing it in a script will force Unity to add it.

As an alternative to SystemInfo.deviceUniqueIdentifier when needing a unique device identifier and it’s not important to keep it the same between wiping save data. Consider generating a unique value based on System.DateTime.Now.Ticks and storing in the playerprefs instead.



Why am I asked to allow/deny the permission at app launch?

Starting with Android 6.0 the user was given more control over permissions apps were allowed to use at runtime; rather than a blanket list of confusing permission being included with the app at installation. Permissions which are prompted for the user to allow are classified as dangerous permissions as they can allow the app to access sensitive data. (in this case READ_PHONE_STATE can allow reading of the phone number, call statuses or list phone accounts registered on the device)

If you want to manually control when the permissions are requested at runtime rather than all dangerous permissions just being prompted at startup then you can add:
<meta-data android:name=”unityplayer.SkipPermissionsDialog” android:value=”true” />
Between the <application> tags of your manifest file.

With the permission dialog skipped all dangerous permissions will remain defaulted as denied! But this allows you to request permissions manually when you need them, rather than all at once at app launch. (However note that you’ll either need to write a Java plugin yourself to control this or find an already built plugin from the store such as Android Buddy which fits this exact purpose!)

Learn more about the READ_PHONE_STATE android permission!

You can read more about the READ_PHONE_STATE permission on the android developer site at https://developer.android.com/reference/android/Manifest.permission.html#READ_PHONE_STATE

 

[출처]

https://www.unity3dtips.com/read_phone_state-permission-android/

 

Remove READ_PHONE_STATE Permission Unity Android - Unity3d Tips

How to remove the READ_PHONE_STATE permission in your Unity Android apps and find the cause! Alternatively prompt the permission later than app startup!

www.unity3dtips.com

 

반응형
Posted by blueasa
, |

Easy Way

I think this easier approach applies if your Unity project is being built with gradle. If it isn't, here is one more reason to upgrade.

Also, a big shout-out to an article called, Hey, Where Did These Permissions Come From?)

  1. Build Your Project
  2. Open the file /path/to/my/project/Temp/gradleOut/build/outputs/logs/manifest-merger-release-report.txt
  3. Profit!
  4. Search the file for the name of your permission, and it'll show you where it came from.

Here is part of the file, where I'm looking for the WRITE_EXTERNAL_STORAGE permission.

uses-permission#android.permission.WRITE_EXTERNAL_STORAGE ADDED from /Users/clinton/Projects/<<ProjectName>>/Temp/gradleOut/src/main/AndroidManifest.xml:7:3-79 MERGED from [gradleOut:IronSource:unspecified] /Users/clinton/Projects/<<ProjectName>>/Temp/gradleOut/IronSource/build/intermediates/bundles/default/AndroidManifest.xml:13:5-81 android:name ADDED from /Users/clinton/Projects/<<ProjectName>>/Temp/gradleOut/src/main/AndroidManifest.xml:7:20-76

Hard Way

There are three ways permissions get added to your project.

  1. They are specified in an Android Manifest file.
  2. They are specified in library (a .aar file).
  3. Unity adds the permission when you use a certain feature. (Added)

My examples use command-line tools on a Mac. I don't know Windows equivalents, but it is possible to find and run unix tools there (using the linux subsystem for windows 10, cygwin, custom binaries, etc.)

1. Find all permissions used in (uncompressed) Android Manifests.

cd /path/to/my/project/Assets grep -r "uses-permission" --include "AndroidManifest.xml" .

This will find all files named AndroidManifest in the current folder (.) or any of its subfolders (-rtells it to search recursively) and spit out any line with the words 'uses-permission'.

In my current project, I get output something like this:

./Plugins/Android/AndroidManifest.xml: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ./Plugins/Android/AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" /> ./Plugins/Android/AndroidManifest.xml: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ./Plugins/Android/AndroidManifest.xml: <uses-permission ./Plugins/Android/IronSource/AndroidManifest.xml: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> ./Plugins/Android/IronSource/AndroidManifest.xml: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. Find the permissions required in Android Libraries

Your project likely contains android libraries (.aar files) and java archives (.jar files). Some android libraries contain an android manifest and specify permissions needed to use the library. (I don't think .jar files actually do this, but .aar files absolutely do). Both .aar and .jar files are .zip files, with a different extension and with specific metadata in specific places.

Find them by running:

find . -iname "*.?ar" -print -exec zipgrep "uses-permission" "{}" "AndroidManifest.xml" ";" 2> /dev/null

Here's what this does. It finds any file (in the current folder (.) and its subfolders) has an extension of (something) a r, thus .jar, or .aar (-name "*.?ar"). It outputs the archive's file name (-print). It then runs zipgrep (-exec). Zipgrep is told to search through any files in the archive ({}) named "AndroidManifest.xml", and output any line with the words "uses-permission". We then pipe the errors to the bit bucket (2> /dev/null) so we don't see lots of errors about archives that don't have android manifests in them.

An example output looks like this:

./OneSignal/Platforms/Android/onesignal-unity.aar AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" /> AndroidManifest.xml: <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> AndroidManifest.xml: <uses-permission android:name="android.permission.WAKE_LOCK" /> AndroidManifest.xml: <uses-permission android:name="android.permission.VIBRATE" /> ... ./Plugins/Android/android.arch.core.common-1.1.0.jar ./Plugins/Android/android.arch.core.runtime-1.1.0.aar ./Plugins/Android/android.arch.lifecycle.common-1.1.0.jar ... ./Plugins/Android/com.google.android.gms.play-services-gcm-11.8.0.aar AndroidManifest.xml: <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" /> ./Plugins/Android/com.google.android.gms.play-services-gcm-license-11.8.0.aar ./Plugins/Android/com.google.android.gms.play-services-iid-11.8.0.aar AndroidManifest.xml: <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" /> ./Plugins/Android/com.google.android.gms.play-services-iid-license-11.8.0.aar ...

The filenames all start with periods. I can thus see, for example, that the onesignal-unity.aar sets several permissions, several .jar files were searched with no permissions inside them, and some of the play services libraries specify permissions.

If I needed to change a library, I could rename the .aar to .zip, extract it, edit it, compress it, and rename it back. (It isn't necessarily wise to change the permissions inside a library, but possible.)

3. Unity Adds the Permission

I didn't have anything to add on this; as said above, if you use the Microphone API, Unity will add a permission for you so your app will work.

However, I've since realized that you can do the following:

  • bring up the Build Settings for Android
  • tick the 'Export Project' box
  • Export the project, noting the location
  • go to /my/project/export/src/main/AndroidManifest.xml. This is what Unity emits for the android manifest (before google's tools do all the merging).
  • compare it (using your favourite diff tool) to Assets/plugins/Android/AndroidManifest.xml; the differences come from Unity.

 

[출처]

https://stackoverflow.com/questions/40931058/how-to-find-source-of-a-permission-in-unity-android

 

How to find source of a permission in Unity Android

Note: This question is specific to Unity3D I have a very clean android manifest file in Unity project under Plugins/Android/ folder with no tag at all. I believe that some

stackoverflow.com

 

반응형
Posted by blueasa
, |

[링크]

https://mentum.tistory.com/150

 

유니티 퍼미션 체크 적용기. (Unity Permission Check)

2019.02.12 다른방식으로 포스트 재 작성 [주의] OBB를 사용하는 Split 빌드의 경우 반드시 저장소 권한을 획득해야함. [주의] 유니티 2018.3 부터 퍼미션체크가 내장되었습니다. 2018.3부터는 플러그인 필요없습..

mentum.tistory.com

 

반응형
Posted by blueasa
, |


[Free Asset] https://assetstore.unity.com/packages/tools/utilities/keystore-helper-58627


using UnityEngine;
using UnityEditor;
using System.IO;
 
[InitializeOnLoad]
public class PreloadSigningAlias
{
 
    static PreloadSigningAlias ()
    {
        PlayerSettings.Android.keystorePass = "KEYSTORE_PASS";
        PlayerSettings.Android.keyaliasName = "ALIAS_NAME";
        PlayerSettings.Android.keyaliasPass = "ALIAS_PASSWORD";
    }
 
}



[출처] https://forum.unity.com/threads/android-keystore-passwords-not-saved-between-sessions.235213/

반응형
Posted by blueasa
, |

안드로이드 유니티 리모트 4 연동 문제 해결하기

안드로이드에서 유니티 리모트를 연동하기 법은 구글형이 잘 알려준다. 여기서는 자주 발생하는 문제에 대한 해결책을 정리한다.
  1. 폰이 인식되지 않는다
  2. 인증되지 않았다
  3. 유니티에서 Play를 해도 반응이 없다

폰이 인식되지 않는다

일단 USB를 꽂으면, 인식이 되고, 탐색기로 봤을 때, 폰이 보이고, 폴더에 접근하여 파일을 복사하거나 삭제할 수 있어야 한다.

확인방법

  1. 탐색기에서 보이는지 확인
  2. adb로 확인
  3. 폰의 개발자 모드에서 USB 디버깅 활성화 체크

해결방법

  1. USB 통합 드라이브를 설치한다. (구글형에게 문의)
  2. 콘솔명령창에서 adb devices를 실행한다.
  3. 폰 설정에 들어가서 USB 디버깅을 활성화 한다. (구글형에게 문의)

폰이 인증되지 않았다

폰이 인식되면, USB 디버깅을 활성화하면, 유니티에서 Play를 할 때, 개발 컴퓨터의 접속을 허가할 지, 폰에서 묻는다. 이 때, 잘 응답하면 문제가 없으나, 잘못하면 인증이 안된 상태가 된다.

확인방법

  1. adb devices를 했을 때, 폰은 나오나 Unauthorized라고 나온다.

해결방법

콘솔 창에서 다음 명령을 실행한다
  1. adb kill-server
  2. adb start-server
위의 명령을 하고 다시 유니티에서 Play를 하면 폰에서 인증창이 다시 나온다.

유니티에서 Play를 해도 반응이 없다

유니티가 실행된 후에 폰을 연결한 경우, 유니티가 인식을 못하는 경우가 있다

확인방법

  1. 위의 문제의 확인 방법을 통해서 문제가 없는데도 Play를 하면 안된다

해결방법

  1. 유니티 에디터를 재실행한다


출처 : http://junhan627.blogspot.kr/2014/11/4.html

반응형
Posted by blueasa
, |