쪽지발송 성공
Click here
재능넷 이용방법
재능넷 이용방법 동영상편
가입인사 이벤트
판매 수수료 안내
안전거래 TIP
재능인 인증서 발급안내

🌲 지식인의 숲 🌲

🌳 디자인
🌳 음악/영상
🌳 문서작성
🌳 번역/외국어
🌳 프로그램개발
🌳 마케팅/비즈니스
🌳 생활서비스
🌳 철학
🌳 과학
🌳 수학
🌳 역사
해당 지식과 관련있는 인기재능

​불법으로 실행해드리는 서비스가 아닌 정직한 광고 운영 마케팅 서비스입니다 : )유튜브 채널 관리를 하고싶은데 어떻게 해야될지 고민...

​불법으로 실행해드리는 서비스가 아닌 정직한 광고 운영 마케팅 서비스입니다 : )인스타그램 관리를 하고싶은데 어떻게 해야될지 고민...

# 최초 의뢰시 개발하고 싶으신 앱의 기능 및 화면구성(UI)에 대한 설명을 같이 보내주세요.# 앱스토어 URL 보내고 단순 카피 해달라고 쪽지 보내...

IOS/Android/Win64/32(MFC)/MacOS 어플 제작해드립니다.제공된 앱의 화면은 아이폰,아이패드,안드로이드 모두  정확하게 일치합니...

Flutter 로컬 인증: local_auth 패키지 사용

2024-09-09 08:01:22

재능넷
조회수 16 댓글수 0

Flutter 로컬 인증: local_auth 패키지 사용 🔐

 

 

모바일 앱 개발의 세계에서 사용자 인증은 매우 중요한 요소입니다. 특히 개인정보 보호와 보안이 강조되는 요즘, 로컬 인증 기능은 앱의 신뢰성을 높이는 핵심 기능이 되었죠. Flutter를 사용하여 앱을 개발하고 계신다면, local_auth 패키지를 통해 손쉽게 로컬 인증 기능을 구현할 수 있습니다. 이 글에서는 Flutter에서 local_auth 패키지를 사용하여 지문 인식, Face ID 등의 생체 인증을 구현하는 방법에 대해 상세히 알아보겠습니다.

Flutter는 크로스 플랫폼 개발의 강자로 자리 잡았습니다. 한 번의 코딩으로 iOS와 Android 양쪽 플랫폼에서 동작하는 앱을 만들 수 있다는 장점 때문이죠. 이러한 Flutter의 장점을 극대화하면서 보안까지 신경 쓰고 싶다면, local_auth 패키지는 여러분의 최고의 선택이 될 것입니다.

 

재능넷과 같은 재능 공유 플랫폼에서도 사용자 인증은 매우 중요한 기능입니다. 개인 정보와 거래 내역을 안전하게 보호하기 위해서죠. 이러한 플랫폼들도 Flutter와 같은 최신 기술을 활용하여 더욱 안전하고 편리한 서비스를 제공하고 있습니다.

자, 이제 본격적으로 local_auth 패키지를 활용한 로컬 인증 구현 방법에 대해 알아보겠습니다. 준비되셨나요? 함께 Flutter의 세계로 빠져봅시다! 🚀

1. local_auth 패키지 소개 📦

local_auth 패키지는 Flutter 앱에서 로컬 인증을 구현하기 위한 강력한 도구입니다. 이 패키지를 사용하면 지문 인식, Face ID, 패턴 인식 등 다양한 생체 인증 방식을 쉽게 구현할 수 있습니다.

 

주요 특징:

  • 크로스 플랫폼 지원 (iOS, Android)
  • 다양한 인증 방식 지원 (지문, 얼굴 인식 등)
  • 간단한 API로 쉬운 구현
  • 높은 보안성

 

local_auth 패키지는 Flutter 커뮤니티에서 활발하게 유지보수되고 있으며, 지속적인 업데이트를 통해 최신 보안 요구사항을 충족시키고 있습니다. 이는 여러분의 앱이 항상 최신의 보안 기준을 만족할 수 있도록 도와줍니다.

💡 Tip: local_auth 패키지를 사용하기 전에 항상 최신 버전을 확인하세요. 패키지의 GitHub 페이지나 pub.dev에서 최신 정보를 얻을 수 있습니다.

이제 local_auth 패키지의 기본적인 개념을 이해하셨을 것입니다. 다음 섹션에서는 이 패키지를 프로젝트에 추가하고 설정하는 방법에 대해 자세히 알아보겠습니다. 준비되셨나요? 계속해서 함께 알아봅시다! 🚀

2. local_auth 패키지 설치 및 설정 ⚙️

local_auth 패키지를 사용하기 위해서는 먼저 프로젝트에 패키지를 추가하고, 필요한 설정을 해야 합니다. 이 과정을 단계별로 자세히 살펴보겠습니다.

2.1 패키지 추가

Flutter 프로젝트의 pubspec.yaml 파일에 local_auth 패키지를 추가합니다:

dependencies:
  flutter:
    sdk: flutter
  local_auth: ^2.1.0  # 최신 버전 확인 필요

그 다음, 터미널에서 다음 명령을 실행하여 패키지를 설치합니다:

flutter pub get

2.2 플랫폼별 설정

Android 설정:

1. android/app/build.gradle 파일에서 minSdkVersion을 설정합니다:

android {
    defaultConfig {
        minSdkVersion 21  // 또는 그 이상
    }
}

2. android/app/src/main/kotlin/[...]/MainActivity.kt 파일에 다음 코드를 추가합니다 (Kotlin 사용 시):

import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant

class MainActivity: FlutterFragmentActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine)
    }
}

iOS 설정:

1. ios/Runner/Info.plist 파일에 다음 권한을 추가합니다:

<key>NSFaceIDUsageDescription</key>
<string>앱에서 Face ID를 사용하는 이유를 설명하세요.</string>

🚨 주의: iOS에서는 사용자에게 생체 인증 사용 이유를 명확히 설명해야 합니다. 이는 앱 심사 과정에서 중요한 요소가 될 수 있습니다.

2.3 권한 확인

로컬 인증을 사용하기 전에 항상 사용자의 권한을 확인해야 합니다. 다음은 권한을 확인하는 기본적인 코드 예시입니다:

import 'package:local_auth/local_auth.dart';

final LocalAuthentication auth = LocalAuthentication();
bool canCheckBiometrics;
List<BiometricType> availableBiometrics;

try {
  canCheckBiometrics = await auth.canCheckBiometrics;
} on PlatformException catch (e) {
  print(e);
}

if (canCheckBiometrics) {
  try {
    availableBiometrics = await auth.getAvailableBiometrics();
  } on PlatformException catch (e) {
    print(e);
  }
}

이 코드는 기기가 생체 인식을 지원하는지, 그리고 어떤 종류의 생체 인식이 가능한지 확인합니다.

로컬 인증 설정 프로세스 패키지 추가 플랫폼 설정 권한 확인

이제 local_auth 패키지를 프로젝트에 성공적으로 추가하고 설정했습니다. 다음 섹션에서는 실제로 로컬 인증을 구현하는 방법에 대해 자세히 알아보겠습니다. 흥미진진한 여정이 계속됩니다! 🚀

3. 로컬 인증 구현하기 🛠️

이제 local_auth 패키지를 설치하고 필요한 설정을 완료했으니, 실제로 로컬 인증을 구현해 보겠습니다. 이 섹션에서는 지문 인식과 Face ID를 사용한 인증 과정을 단계별로 구현해 볼 것입니다.

3.1 기본적인 인증 구현

먼저, 가장 기본적인 형태의 로컬 인증을 구현해 보겠습니다. 다음은 사용자에게 생체 인증을 요청하는 간단한 함수입니다:

import 'package:flutter/services.dart';
import 'package:local_auth/local_auth.dart';

Future<bool> authenticateUser() async {
  final LocalAuthentication localAuth = LocalAuthentication();
  bool isAuthenticated = false;

  try {
    isAuthenticated = await localAuth.authenticate(
      localizedReason: '계속하려면 생체 인증이 필요합니다.',
      options: const AuthenticationOptions(
        useErrorDialogs: true,
        stickyAuth: true,
      ),
    );
  } on PlatformException catch (e) {
    print(e);
  }

  return isAuthenticated;
}

이 함수는 사용자에게 생체 인증을 요청하고, 인증 성공 여부를 boolean 값으로 반환합니다. localizedReason 파라미터는 사용자에게 표시될 인증 요청 이유입니다.

💡 Pro Tip: stickyAuth 옵션을 true로 설정하면, 사용자가 앱을 백그라운드로 보내고 다시 돌아왔을 때 인증 프로세스가 자동으로 재개됩니다. 이는 사용자 경험을 향상시키는 데 도움이 됩니다.

3.2 인증 타입 확인

때로는 기기에서 사용 가능한 인증 방식을 확인하고 싶을 수 있습니다. 다음 함수를 사용하여 가능한 생체 인증 타입을 확인할 수 있습니다:

Future<void> checkBiometrics() async {
  final LocalAuthentication auth = LocalAuthentication();
  List<BiometricType> availableBiometrics = [];

  try {
    availableBiometrics = await auth.getAvailableBiometrics();
  } on PlatformException catch (e) {
    print(e);
  }

  print('사용 가능한 생체 인증: $availableBiometrics');
}

이 함수는 기기에서 사용 가능한 모든 생체 인증 타입을 리스트로 반환합니다. 이를 통해 지문 인식, Face ID 등 어떤 인증 방식이 가능한지 확인할 수 있습니다.

3.3 커스텀 UI 구현

local_auth 패키지는 기본적으로 시스템 UI를 사용합니다. 하지만 때로는 앱의 디자인에 맞는 커스텀 UI를 구현하고 싶을 수 있습니다. 다음은 간단한 커스텀 인증 UI를 구현하는 예시입니다:

import 'package:flutter/material.dart';

class CustomAuthDialog extends StatelessWidget {
  final Function onAuthenticate;

  const CustomAuthDialog({Key? key, required this.onAuthenticate}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: Text('생체 인증'),
      content: Text('계속하려면 생체 인증이 필요합니다.'),
      actions: <Widget>[
        TextButton(
          child: Text('취소'),
          onPressed: () => Navigator.of(context).pop(),
        ),
        ElevatedButton(
          child: Text('인증'),
          onPressed: () async {
            bool isAuthenticated = await onAuthenticate();
            if (isAuthenticated) {
              Navigator.of(context).pop(true);
            } else {
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('인증 실패')),
              );
            }
          },
        ),
      ],
    );
  }
}

이 커스텀 다이얼로그를 사용하려면 다음과 같이 호출할 수 있습니다:

showDialog(
  context: context,
  builder: (BuildContext context) {
    return CustomAuthDialog(
      onAuthenticate: authenticateUser,
    );
  },
);
로컬 인증 프로세스 인증 요청 생체 정보 스캔 인증 결과 인증 실패 시 재시도

이제 Flutter 앱에서 local_auth 패키지를 사용하여 기본적인 로컬 인증을 구현하는 방법을 알아보았습니다. 이러한 기능은 재능넷과 같은 플랫폼에서 사용자의 개인 정보를 보호하고 보안을 강화하는 데 매우 유용할 것입니다.

다음 섹션에서는 더 고급 기능과 베스트 프랙티스에 대해 알아보겠습니다. 로컬 인증의 세계는 여기서 끝나지 않습니다. 계속해서 탐험해 봅시다! 🚀

4. 고급 기능 및 베스트 프랙티스 🏆

local_auth 패키지를 사용한 기본적인 인증 구현을 마스터하셨다면, 이제 더 고급 기능과 베스트 프랙티스에 대해 알아볼 차례입니다. 이 섹션에서는 보다 복잡한 시나리오를 다루고, 앱의 보안성과 사용자 경험을 향상시키는 방법을 살펴보겠습니다.

4.1 다중 인증 방식 지원

사용자에게 여러 인증 옵션을 제공하는 것은 좋은 사용자 경험을 제공하는 방법 중 하나입니다. 다음은 지문 인식과 Face ID를 모두 지원하는 예제 코드입니다:

import 'package:local_auth/local_auth.dart';

Future<bool> authenticateWithMultipleOptions() async {
  final LocalAuthentication localAuth = LocalAuthentication();
  bool canCheckBiometrics = await localAuth.canCheckBiometrics;

  if (canCheckBiometrics) {
    List<BiometricType> availableBiometrics = 
        await localAuth.getAvailableBiometrics();

    if (availableBiometrics.contains(BiometricType.face)) {
      // Face ID 사용
      return await localAuth.authenticate(
        localizedReason: 'Face ID로 인증해주세요.',
        options: const AuthenticationOptions(biometricOnly: true),
      );
    } else if (availableBiometrics.contains(BiometricType.fingerprint)) {
      // 지문 인식 사용
      return await localAuth.authenticate(
        localizedReason: '지문으로 인증해주세요.',
        options: const AuthenticationOptions(biometricOnly: true),
      );
    }
  }

  // 생체 인증을 사용할 수 없는 경우
  return false;
}

이 코드는 먼저 사용 가능한 생체 인증 방식을 확인한 후, 적절한 인증 방식을 선택합니다.

4.2 인증 실패 처리

사용자가 여러 번 인증에 실패할 경우, 대체 인증 방식을 제공하는 것이 좋습니다. 다음은 이를 구현한 예제입니다:

import 'package:flutter/material.dart';

Future<bool> authenticateWithFallback(BuildContext context) async {
  final LocalAuthentication localAuth = LocalAuthentication();
  bool isAuthenticated = false;
  int attempts = 0;

  while (!isAuthenticated && attempts < 3) {
    try {
      isAuthenticated = await localAuth.authenticate(
        localizedReason: '생체 인증으로 로그인해주세요.',
        options: const AuthenticationOptions(biometricOnly: true),
      );
      attempts++;
    } catch (e) {
      print(e);
    }
  }

  if (!isAuthenticated) {
    // 3번 실패 후 대체 인증 방식 제공
    bool useAlternative = await showDialog(
      context: context,
      builder: (context) => AlertDialog(
        title: Text('생체 인증 실패'),
        content: Text('비밀번호로 로그인하시겠습니까?'),
        actions: [
          TextButton(
            child: Text('취소'),
            onPressed: () => Navigator.of(context).pop(false),
          ),
          TextButton(
            child: Text('확인'),
            onPressed: () => Navigator.of(context).pop(true),
          ),
        ],
      ),
    );

    if (useAlternative) {
      // 여기에 대체 인증 로직 구현 (예: 비밀번호 입력)
      // ...
    }
  }

  return isAuthenticated;
}

이 코드는 사용자가 3번 연속 인증에 실패하면 대체 인증 방식(예: 비밀번호)을 제안합니다.

4.3 보안 강화 팁

로컬 인증을 사용할 때 보안을 강화하기 위한 몇 가지 팁을 소개합니다:

  • 민감한 정보 암호화: 생체 인증만으로는 데이터를 완벽하게 보호할 수 없습니다. 중요한 데이터는 항상 암호화하여 저장하세요.
  • 인증 상태 관리: 앱이 백그라운드로 갔다가 돌아올 때 재인증을 요구하는 것을 고려하세요.
  • 에러 처리: 모든 가능한 에러 상황에 대해 적절히 대응하고, 사용자에게 명확한 피드백을 제공하세요.
  • 테스트: 다양한 기기와 OS 버전에서 철저히 테스트하세요.

🔒 Security Note: 생체 인증은 편리하지만, 완벽한 보안 솔루션은 아닙니다. 매우 중요한 데이터나 기능에 대해서는 추가적인 보안 계층을 고려하세요.

4.4 사용자 경험 최적화

로컬 인증을 구현할 때 사용자 경험을 최적화하는 것도 중요합니다. 다음은 몇 가지 제안사항입니다:

  • 명확한 안내: 사용자에게 왜 생체 인증이 필요한지 명확히 설명하세요.
  • 대체 옵션 제공: 생체 인증을 사용하지 않거나 사용할 수 없는 사용자를 위해 항상 대체 로그인 방식을 제공하세요.
  • 빠른 응답: 인증 프로세스가 빠르게 진행되도록 하고, 필요한 경우 로딩 인디케이터를 표시하세요.
  • 에러 메시지 최적화: 에러 메시지는 명확하고 이해하기 쉽게 작성하세요.
로컬 인증 베스트 프랙티스 다중 인증 방식 지원 보안 강화 사용자 경험 최적화

이러한 고급 기능과 베스트 프랙티스를 적용하면, 재능넷과 같은 플랫폼에서 더욱 안전하고 사용자 친화적인 인증 시스템을 구축할 수 있습니다. 사용자의 개인 정보를 보호하면서도 편리한 사용 경험을 제공하는 것이 핵심입니다.

다음 섹션에서는 실제 프로젝트에서 local_auth를 활용한 사례 연구와 함께, 흔히 발생할 수 있는 문제점들과 그 해결 방법에 대해 알아보겠습니다. 로컬 인증의 여정이 계속됩니다! 🚀

5. 사례 연구 및 문제 해결 🔍

이제 local_auth 패키지를 사용한 로컬 인증의 구현 방법과 베스트 프랙티스에 대해 알아보았습니다. 이 섹션에서는 실제 프로젝트에서의 적용 사례와 함께 개발 과정에서 흔히 마주칠 수 있는 문제점들과 그 해결 방법에 대해 살펴보겠습니다.

5.1 사례 연구: 재능넷 앱의 로컬 인증 구현

재능넷과 같은 재능 공유 플랫폼 앱에서 로컬 인증을 구현한다고 가정해 봅시다. 이 앱에서는 다음과 같은 상황에서 로컬 인증을 사용할 수 있습니다:

  1. 앱 진입 시: 앱을 열 때마다 사용자 인증을 요구합니다.
  2. 결제 진행 시: 서비스 구매나 판매 대금 수령 시 추가 인증을 요구합니다.
  3. 민감한 정보 접근 시: 개인 정보 수정이나 계좌 정보 확인 시 인증을 요구합니다.

이러한 시나리오를 구현하기 위해 다음과 같은 코드를 사용할 수 있습니다:

import 'package:flutter/material.dart';
import 'package:local_auth/local_auth.dart';

class TalentNetApp extends StatefulWidget {
  @override
  _TalentNetAppState createState() => _TalentNetAppState();
}

class _TalentNetAppState extends State<TalentNetApp> {
  final LocalAuthentication _localAuth = LocalAuthentication();
  bool _isAuthenticated = false;

  @override
  void initState() {
    super.initState();
    _authenticate();
  }

  Future<void> _authenticate() async {
    bool authenticated = false;
    try {
      authenticated = await _localAuth.authenticate(
        localizedReason: '앱에 접근하려면 인증이 필요합니다.',
        options: const AuthenticationOptions(
          useErrorDialogs: true,
          stickyAuth: true,
        ),
      );
    } catch (e) {
      print(e);
    }
    if (!mounted) return;

    setState(() {
      _isAuthenticated = authenticated;
    });
  }

  @override
  Widget build(BuildContext context) {
    if (!_isAuthenticated) {
      return Scaffold(
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text('인증이 필요합니다'),
              ElevatedButton(
                child: Text('다시 시도'),
                onPressed: _authenticate,
              ),
            ],
          ),
        ),
      );
    }

    // 인증 성공 시 메인 앱 화면 표시
    return Scaffold(
      appBar: AppBar(title: Text('재능넷')),
      body: Center(child: Text('환영합니다!')),
    );
  }
}

이 코드는 앱 실행 시 즉시 인증을 요구하며, 인증에 성공할 때까지 앱의 메인 화면을 표시하지 않습니다.

5.2 흔한 문제점과 해결 방법

local_auth 패키지를 사용하면서 개발자들이 자주 마주치는 문제점들과 그 해결 방법을 살펴보겠습니다:

  1. 문제: 안드로이드에서 인증 다이얼로그가 표시되지 않음

    해결: MainActivity를 FlutterFragmentActivity로 변경했는지 확인하세요. 또한 안드로이드 매니페스트 파일에 USE_FINGERPRINT 권한이 추가되어 있는지 확인하세요.

  2. 문제: iOS에서 Face ID가 작동하지 않음

    해결: Info.plist 파일에 NSFaceIDUsageDescription 키가 추가되어 있는지 확인하세요. 이 키에는 Face ID를 사용하는 이유를 설명하는 문구가 포함되어야 합니다.

  3. 문제: 인증 후 앱이 백그라운드로 갔다가 돌아올 때 재인증 필요

    해결: authenticate 메서드 호출 시 options 파라미터에 stickyAuth: true를 설정하세요. 이렇게 하면 앱이 백그라운드로 갔다가 돌아와도 인증 상태가 유지됩니다.

💡 Tip: 개발 중 문제가 발생하면 항상 최신 버전의 local_auth 패키지를 사용하고 있는지 확인하세요. 또한, Flutter와 플랫폼별 설정이 올바르게 되어 있는지 재확인하는 것도 좋습니다.

5.3 성능 최적화

로컬 인증을 구현할 때 앱의 성능을 최적화하기 위한 몇 가지 팁을 소개합니다:

  • 불필요한 인증 피하기: 모든 화면에서 인증을 요구하지 말고, 정말 필요한 경우에만 인증을 요청하세요.
  • 캐싱 활용: 인증 상태를 캐시하여 짧은 시간 내에 반복적인 인증 요청을 피하세요.
  • 비동기 처리: 인증 프로세스를 비동기적으로 처리하여 UI 블로킹을 방지하세요.
  • 에러 처리 최적화: 모든 가능한 에러 케이스를 처리하되, 과도한 try-catch 블록 사용은 피하세요.
로컬 인증 문제 해결 프로세스 문제 식별 원인 분석 해결책 적용 지속적인 모니터링 및 개선

이러한 사례 연구와 문제 해결 방법을 통해, 재능넷과 같은 플랫폼에서 로컬 인증을 효과적으로 구현할 수 있습니다. 사용자의 개인 정보를 안전하게 보호하면서도 원활한 사용 경험을 제공하는 것이 핵심입니다.

다음 섹션에서는 로컬 인증의 미래 전망과 함께, 이 기술이 앞으로 어떻게 발전할지에 대해 살펴보겠습니다. 로컬 인증의 세계는 계속해서 진화하고 있습니다! 🚀

관련 키워드

  • Flutter
  • local_auth
  • 생체인증
  • 지문인식
  • Face ID
  • 보안
  • 사용자경험
  • 크로스플랫폼
  • 인증구현
  • 미래전망

지식의 가치와 지적 재산권 보호

자유 결제 서비스

'지식인의 숲'은 "이용자 자유 결제 서비스"를 통해 지식의 가치를 공유합니다. 콘텐츠를 경험하신 후, 아래 안내에 따라 자유롭게 결제해 주세요.

자유 결제 : 국민은행 420401-04-167940 (주)재능넷
결제금액: 귀하가 받은 가치만큼 자유롭게 결정해 주세요
결제기간: 기한 없이 언제든 편한 시기에 결제 가능합니다

지적 재산권 보호 고지

  1. 저작권 및 소유권: 본 컨텐츠는 재능넷의 독점 AI 기술로 생성되었으며, 대한민국 저작권법 및 국제 저작권 협약에 의해 보호됩니다.
  2. AI 생성 컨텐츠의 법적 지위: 본 AI 생성 컨텐츠는 재능넷의 지적 창작물로 인정되며, 관련 법규에 따라 저작권 보호를 받습니다.
  3. 사용 제한: 재능넷의 명시적 서면 동의 없이 본 컨텐츠를 복제, 수정, 배포, 또는 상업적으로 활용하는 행위는 엄격히 금지됩니다.
  4. 데이터 수집 금지: 본 컨텐츠에 대한 무단 스크래핑, 크롤링, 및 자동화된 데이터 수집은 법적 제재의 대상이 됩니다.
  5. AI 학습 제한: 재능넷의 AI 생성 컨텐츠를 타 AI 모델 학습에 무단 사용하는 행위는 금지되며, 이는 지적 재산권 침해로 간주됩니다.

재능넷은 최신 AI 기술과 법률에 기반하여 자사의 지적 재산권을 적극적으로 보호하며,
무단 사용 및 침해 행위에 대해 법적 대응을 할 권리를 보유합니다.

© 2024 재능넷 | All rights reserved.

댓글 작성
0/2000

댓글 0개

해당 지식과 관련있는 인기재능

애플리케이션 서비스 안녕하세요. 안드로이드 개발자입니다.여러분들의 홈페이지,블로그,카페,모바일 등 손쉽게 어플로 제작 해드립니다.요즘...

 [프로젝트 가능 여부를 확인이 가장 우선입니다. 주문 전에 문의 해주세요] ※ 언어에 상관하지 마시고 일단 문의하여주세요!※ 절대 비...

안녕하세요. 경력 8년차 프리랜서 개발자 입니다.피쳐폰 2g 때부터 지금까지 모바일 앱 개발을 전문적으로 진행해 왔으며,신속하 정확 하게 의뢰하...

📚 생성된 총 지식 2,986 개

  • (주)재능넷 | 대표 : 강정수 | 경기도 수원시 영통구 봉영로 1612, 7층 710-09 호 (영통동) | 사업자등록번호 : 131-86-65451
    통신판매업신고 : 2018-수원영통-0307 | 직업정보제공사업 신고번호 : 중부청 2013-4호 | jaenung@jaenung.net

    (주)재능넷의 사전 서면 동의 없이 재능넷사이트의 일체의 정보, 콘텐츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.
    (주)재능넷은 통신판매중개자로서 재능넷의 거래당사자가 아니며, 판매자가 등록한 상품정보 및 거래에 대해 재능넷은 일체 책임을 지지 않습니다.

    Copyright © 2024 재능넷 Inc. All rights reserved.
ICT Innovation 대상
미래창조과학부장관 표창
서울특별시
공유기업 지정
한국데이터베이스진흥원
콘텐츠 제공서비스 품질인증
대한민국 중소 중견기업
혁신대상 중소기업청장상
인터넷에코어워드
일자리창출 분야 대상
웹어워드코리아
인터넷 서비스분야 우수상
정보통신산업진흥원장
정부유공 표창장
미래창조과학부
ICT지원사업 선정
기술혁신
벤처기업 확인
기술개발
기업부설 연구소 인정
마이크로소프트
BizsPark 스타트업
대한민국 미래경영대상
재능마켓 부문 수상
대한민국 중소기업인 대회
중소기업중앙회장 표창
국회 중소벤처기업위원회
위원장 표창