Programming/React Native

React Native 팁

빠릿베짱이 2019. 3. 4. 21:27
반응형

 키보드 관련 이슈

 

  • textInput 포커스 될때, 키보드가 올라오면서 뷰가 위로 올라감.

AndroidManifest.xml 파일에 설정값이랑 관련있음

android:windowSoftInputMode="adjustResize"

관련 정보 


 커스텀 폰트 (Custom Font)

 아이폰은 폰트 이름으로 적용되고, 안드로이드는 파일이름 적용됨.

확장자가 대문자일 경우 적용 안되는 듯 함.( 안드로이드에서 확인 )

fontFamily 에 설정한 폰트로 하면 적용되나, fontWeight를 bold로 설정할 경우에 적용이 안됨. 

-> 아마도 해당 폰트에 bold 버전이 함께 삽입되어야 하는 것으로 생각됨.



  • Facebook login
    • Runtime Error  : The Facebook sdk must be initialized before calling activateApp


<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>

위의 메타 데이터를 application 태그 내부에 넣지않고, 외부에 넣어서 발생함.

 이슈 리스트

 

  • 카카오 로그인
    • 이슈 : "AUTHORIZATION_FAILED: invalid android_key_hash or ios_bundle_id or web_site_url"  
    • 카카오 로그인을 붙이다가 보면, 키 해쉬를 등록하는 부분이 있다. 개발 환경이 vscode이다 보니 파워쉘로 작업했다. 이것이 화근이었음.
    • 코드상으로 키 해쉬를 추출하는 것과, keytool을 이용해서 추출하는 것이 달랐음
    • 원인은 파워쉘에서 해서 문제였음. 명령 프롬프트 창에서 시도하니 같은 값이 나왔음.
    • 아래와 같이 추출한 키 값을 카카오- 내 어플리케이션 - 안드로이드 - 키해쉬 에 등록해야함

  • command line 
keytool -exportcert -alias androiddebugkey -keystore c:\users\sijoo\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64

  • Code

package io.efil.dogcent;

import android.app.Application;
import com.facebook.CallbackManager;
import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;
import com.facebook.react.ReactApplication;
import com.dooboolab.kakaologins.RNKakaoLoginsPackage;
import com.dooboolab.naverlogin.RNNaverLoginPackage;
import com.facebook.reactnative.androidsdk.FBSDKPackage;
import com.reactnativecommunity.webview.RNCWebViewPackage;
import com.dylanvann.fastimage.FastImageViewPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader;
import com.kevinresol.react_native_default_preference.RNDefaultPreferencePackage;

import java.util.Arrays;
import java.util.List;

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import static com.kakao.util.helper.Utility.getPackageInfo;
import java.security.MessageDigest;
import android.util.Base64;
import java.security.NoSuchAlgorithmException;
import android.util.Log;

public class MainApplication extends Application implements ReactApplication {
private static CallbackManager mCallbackManager = CallbackManager.Factory.create();

protected static CallbackManager getCallbackManager() {
return mCallbackManager;
}

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}

@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new RNKakaoLoginsPackage(),
new RNNaverLoginPackage(),
new FBSDKPackage(mCallbackManager),
new RNCWebViewPackage(),
new FastImageViewPackage(),
new VectorIconsPackage(),
new RNGestureHandlerPackage(),
new RNDefaultPreferencePackage()
);
}

@Override
protected String getJSMainModuleName() {
return "index";
}
};

@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}

@Override
public void onCreate() {

super.onCreate();
Log.e("Key Hash : ", getKeyHash(this));
AppEventsLogger.activateApp(this);
SoLoader.init(this, /* native exopackage */ false);

}

public static String getKeyHash(final Context context) {
PackageInfo packageInfo = getPackageInfo(context, PackageManager.GET_SIGNATURES);

if (packageInfo == null)
return null;

for (Signature signature : packageInfo.signatures) {
try {
Log.w("KEYHASH", "signature=" + signature);
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
return Base64.encodeToString(md.digest(), Base64.NO_WRAP);
} catch (NoSuchAlgorithmException e) {
Log.w("KEYHASH", "Unable to get MessageDigest. signature=" + signature, e);
}
}
return null;
}

}




반응형

'Programming > React Native' 카테고리의 다른 글

앱 링크 개발 - custom dynamic link 만들기 삽질  (0) 2023.08.22