Skip to content

Commit

Permalink
Merge pull request #12 from mym0404/extract-android-key-hash
Browse files Browse the repository at this point in the history
feat(core): getKeyHashAndroid utility fn
  • Loading branch information
mym0404 authored Apr 28, 2024
2 parents 397b807 + bafe4e7 commit 83cc438
Show file tree
Hide file tree
Showing 8 changed files with 54 additions and 4 deletions.
23 changes: 23 additions & 0 deletions docs/docs/core/get-android-keyhash.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
sidebar_position: 3
---

# 안드로이드 키 해시 얻기

## 안드로이드 키 해시 얻기

안드로이드의 키 해시를 각 환경에서 쉽게 얻을 수 있는 유틸리티 함수입니다.

```tsx title='index.js'
import { getKeyHashAndroid } from '@react-native-kakao/core';

getKeyHashAndroid().then(console.log);
```

:::info
이 함수는 콘솔이 출력되는 debug환경에서는 위와 같이 단순히 `console.log`로 확인할 수 있지만,

디버그 환경이 아닌 릴리즈 환경에서는 정확한 키를 얻기 위해 `Text`같은 컴포넌트에 보여준 뒤 얻어오는 것도 방법이 될 수 있습니다.

물론 이 유틸리티를 사용하지 않고 [공식 문서](https://developers.kakao.com/docs/latest/ko/android/getting-started#before-you-begin-add-key-hash)를 따라 직접 추출할 수 있습니다.
:::
8 changes: 6 additions & 2 deletions docs/docs/install-android.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ sidebar_position: 3
- 디버그 키 해시: 프로젝트를 처음 생성하거나 디버그할 때, 안드로이드 스튜디오에서 개발 환경에 맞게 자동으로 생성되는 디버그 인증서에서 해시(hash)한 값
- 릴리즈 키 해시: 앱 스토어에 앱을 배포하기 위해 생성한 릴리즈 인증서로부터 해시한 값

키 해시 생성은 [공식 문서](https://developers.kakao.com/docs/latest/ko/android/getting-started#before-you-begin-add-key-hash)에서 참고해주세요.

:::info
이것과 더불어 Google Play Console에서 발급해주는 키 해시가 하나 더 있습니다.

Expand All @@ -50,6 +48,12 @@ Google Play Console에선 앱을 릴리즈 할 때마다 [App signing](https://p
이것을 등록하지 않을 시 실제 플레이 스토어에 앱을 출시해 구동시킬 때 Kakao SDK가 동작하지 않습니다.
:::

키 해시는 `core`패키지의 `getKeyHashAndroid()`함수로 쉽게 얻어올 수 있습니다.

디버그, 릴리즈, 플레이스토어 환경에서 각각 이 함수의 결과값을 콘솔이나 텍스트에 출력 후 그대로 사용하시면 됩니다.

키 해시 직접 생성은 [공식 문서](https://developers.kakao.com/docs/latest/ko/android/getting-started#before-you-begin-add-key-hash)에서 참고해주세요.

## 프로젝트 권한

안드로이드의 `AndroidManifest.xml`에서 인터넷에 사용된 권한을 허용해줍니다.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package net.mjstudio.rnkakao.core

import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactMethod
import com.kakao.sdk.common.KakaoSdk
import com.kakao.sdk.common.util.Utility
import net.mjstudio.rnkakao.core.util.onMain

class RNCKakaoCoreModule internal constructor(context: ReactApplicationContext) :
Expand All @@ -17,6 +19,11 @@ class RNCKakaoCoreModule internal constructor(context: ReactApplicationContext)
KakaoSdk.init(context = reactApplicationContext, appKey = appKey)
}

@ReactMethod
override fun getKeyHashAndroid(promise: Promise) {
promise.resolve(Utility.getKeyHash(reactApplicationContext))
}

companion object {
const val NAME = "RNCKakaoCore"
}
Expand Down
3 changes: 3 additions & 0 deletions packages/core/android/src/oldarch/KakaoCoreSpec.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package net.mjstudio.rnkakao.core

import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReactContextBaseJavaModule

abstract class KakaoCoreSpec internal constructor(context: ReactApplicationContext) :
ReactContextBaseJavaModule(context) {
abstract fun initializeKakaoSDK(appKey: String)

abstract fun getKeyHashAndroid(promise: Promise)
}
6 changes: 6 additions & 0 deletions packages/core/ios/RNCKakaoCore.mm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ - (RNCKakaoCoreManager*)manager {
[[self manager] initializeKakaoSDK:appKey];
}

RCT_EXPORT_METHOD(getKeyHashAndroid
: (RCTPromiseResolveBlock)resolve reject
: (RCTPromiseRejectBlock)reject) {
resolve(nil);
}

// Don't compile this code when we build for the old architecture.
#ifdef RCT_NEW_ARCH_ENABLED
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
Expand Down
4 changes: 4 additions & 0 deletions packages/core/src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,8 @@ const Native: Spec = Module
export function initializeKakaoSDK(appKey: string) {
Native.initializeKakaoSDK(appKey);
}

export function getKeyHashAndroid(): Promise<string | undefined> {
return Native.getKeyHashAndroid();
}
export { kAssert };
1 change: 1 addition & 0 deletions packages/core/src/spec/NativeKakaoCore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { TurboModuleRegistry } from 'react-native';

export interface Spec extends TurboModule {
initializeKakaoSDK(appKey: string): void;
getKeyHashAndroid(): Promise<string | undefined>;
}

export default TurboModuleRegistry.getEnforcing<Spec>('RNCKakaoCore');
6 changes: 4 additions & 2 deletions turbo.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@
"packages/**/src/**",
"packages/**/ios/**",
"packages/core/expo-config-plugin",
"example/ios/**",
"example/ios/**/*.{mm,m,swift,h,plist,lock}",
"!example/ios/.xcode.env*",
"!example/android/.gradle",
"!example/android/build",
"!example/android/app/build",
Expand All @@ -68,7 +69,8 @@
"packages/**/src/**",
"packages/**/ios/**",
"packages/core/expo-config-plugin",
"example/ios/**",
"example/ios/**/.{mm,m,swift,h,plist,lock}",
"!example/ios/.xcode.env*",
"!example/android/.gradle",
"!example/android/build",
"!example/android/app/build",
Expand Down

0 comments on commit 83cc438

Please sign in to comment.