GamePot Docs
  • Welcome
  • Getting Started
    • Quickstart
  • Basics
    • GamePot 2.0
      • (中文)
        • Console
          • 使用前
          • 使用 GAMEPOT
        • Dasboard
          • 创建项目和仪表盘
          • 访问仪表盘
          • 转换为付费
          • 用户指标
          • 销售指标
          • 指标术语整理
          • 会员管理
          • 支付管理
          • 公告事项管理(Pro以上)
          • 维护和更新公告(Pro以上)
          • 发送消息
          • 优惠券管理(Pro以上)
          • 客户支持(Pro以上)
          • 游戏
          • 排行榜
          • 好友列表
          • 项目设置
          • 管理仪表盘用户
          • 仪表盘管理员功能
        • Unity SDK
          • Unity SDK_配置要求
          • Unity SDK_SDK安装及环境配置
          • Unity SDK_登录相关功能
          • Unity SDK_第三方账户关联
          • Unity SDK_支付功能
          • Unity SDK_SDK自主提供的登录UI
          • Unity SDK_优惠券功能
          • Unity SDK_推送功能
          • Unity SDK_显示公告事项图片的功能
          • Unity SDK_客户支持功能
          • Unity SDK_恶意使用支付取消的用户重新支付弹窗功能
          • Unity SDK_远程配置功能
          • Unity SDK_游戏日志传输功能
          • Unity SDK_确认AppStatus
          • Unity SDK_第三方SDK关联
          • Unity SDK_关联Firebase SDK时注意事项
          • Unity SDK_在Native环境下修改项目
        • Unreal SDK
          • 安装及环境配置
          • 登录相关功能
          • 第三方账户关联
          • 支付功能
          • 自主提供的登录UI
          • 优惠券功能
          • 推送功能
          • 显示公告事项图片的功能
          • 客户支持功能
          • 恶意使用支付取消的用户重新支付弹窗功能
          • 远程配置功能
          • 游戏日志传输功能
          • 第三方SDK关联
        • Android SDK
          • Android SDK_配置要求
          • Android SDK_安装SDK和配置环
          • Android SDK_登录相关功能
          • Android SDK_关联外部账户
          • Android SDK_支付功能
          • Android SDK_SDK自行提供的登录UI
          • Android SDK_优惠券功能
          • Android SDK_推送功能
          • Android SDK_公告事项图像显示功能
          • Android SDK_客户支持功能
          • Android SDK_维护及强制更新功能
          • Android SDK_远程配置功能
          • Android SDK_游戏日志传输功能
          • Android SDK_确认AppStatus
          • Android SDK_关联第三方SDK
        • iOS SDK
          • iOS SDK_配置要求
          • iOS SDK_安装及环境配置
          • iOS SDK_登录相关功能
          • iOS SDK_第三方账户关联
          • iOS SDK_支付功能
          • iOS SDK_自主提供的登录UI
          • iOS SDK_优惠券功能
          • iOS SDK_推送功能
          • iOS SDK_显示公告事项图片的功能
          • iOS SDK_客户支持功能
          • iOS SDK_维护及强制更新功能
          • iOS SDK_远程配置功能
          • iOS SDK_游戏日志传输功能
          • iOS SDK_确认AppStatus
          • iOS SDK_第三方SDK关联
        • Javascript SDK
          • JS SDK_安装及环境配置
          • JS SDK_重置
          • JS SDK_登录,退出
          • JS SDK_插件
        • Server API
          • 请求发放付费道具
          • Gamepot user ID verification(optional)
          • 外部支付
        • Open API
          • 查询用户
          • 查询用户停用
          • 设置用户停用
          • 查询每日访问者(DAU)
          • 查询新用户(NRU)
          • 查询同时访问者(CCU)
          • 查询支付
          • 查询取消支付
          • 查询支付销售统计
          • 查询角色
          • 查询一般优惠券的使用
          • 使用优惠券
          • 查询展示中的公告事项
          • 排名板
            • 排名板用户分数登录API
            • 导入排名板用户分数API
            • 使用特定搜索词获取分数API
            • 获取排名板信息和用户数的API
            • 用排名板查询用户分数的API
            • 删除登录排行板用户API
            • 排名板登录API
            • 排名板修改API
            • 排名板删除API
          • 好友管理
          • 提前预约参与
          • 提前预约验证码确认
          • 查询本人认证结果
        • Troubleshooting
          • 在64-bit环境下的构建过程中,尝试使用NAVER ID登录时发生崩溃(构建API 28以上的Android)
          • 上传Play Store APK时,会发出com.nhncorp.nelo2.android.util加密模式安全通知
          • 构建iOS时发生错误
          • Line i386 x86_64 IOS Archive上传问题
          • AdbrixRM i386 x86_64 iOS构建问题
          • 使用NAVER ID登录时出现的NaverThirdPartyLogin.framework i386 x86_64问题
          • Unity 2018.4.4以上、Unity 2019.2.0以上版本中的Android构建问题
          • (Unity)应用NAVER Lounge SDK(以NaverSDK Ver 1.1.1为例进行说明)
          • (Unity)应用GoogleMobileAds SDK(以GoogleMobileAds-v6.1.2为例进行说明)
          • (Unity)应用Appsflyer/Singular SDK(以appsflyer-v6.3.2为例进行说明)
          • (Unity)单独应用Firebase SDK时(以Firebase Unity 8.7.0为例进行说明)
          • 升级到android、targetsdkversion 31以上时,出现以下错误和应用无法安装的问题
          • 在Android OS 13设备上无法接收推送设置时
          • GAMEPOT SDK中收集的个人信息类型
          • (Unity) 使用Unity编辑选项中的minify时
        • FAQ
          • 无法登录!
          • 无法付款!
          • 未收到應用內項目列表
          • Adbrix Remaster
          • Naver Cafe
          • 服务推出
          • 推送
          • 应用签名
          • 用户ID迁移方法
          • 用户ID恢复
          • 仪表盘提前预约页面关联方法
          • 案例集
          • 版本 3.5.1 中的變更 - 由於安全問題,禁止使用此版本。
          • Ver Unity 2.1.1 To Ver Unity 2.1.2 Or New Version
          • android, targetsdkversion 升到31的时候
          • Gamepot v3.6.0 更新
      • NPUSH
        • FCM (Android)
        • APNs (iOS)
      • NPUSH (English)
        • FCM (Android)
        • APNs (iOS)
      • NPUSH (日本語)
        • FCM (Android)
        • APNs (iOS)
      • NPUSH (中文)
        • FCM (Android)
        • APNs (iOS)
    • GamePot 3.0
      • GAMEPOT 3.0 (KR)
        • GAMEPOT 사용
          • 실시간 통계
          • Apple App Store shared secret
          • Google Play Store API 인증
          • Unity SDK
          • Android SDK
          • iOS SDK
          • Javascript SDK
          • 스토어 환경 설정
            • Google Play Store 환경 설정
            • App Store Connect
            • ONE store
          • 로그인 인증 환경 설정
            • 구글 로그인
            • 애플 아이디 로그인
            • 페이스북 로그인
            • 스팀 로그인
          • 푸시
          • 고객센터
          • 사용자 통계
          • 동시 접속 사용자
          • 쿠폰
          • 플러그인
          • 게임팟 NPUSH 서비스 전환 및 푸시 서비스 변경 안내
          • 게임팟 스튜디오 ( 빌드 관리, 게임 런쳐 )
          • 로컬 푸시
          • 비속어 필터
      • GAMEPOT 3.0 (EN)
        • Using GAMEPOT
          • Real-Time Statistics
          • Apple App Store shared secret
          • Google Play Store API Authentication
          • Unity SDK
          • Android SDK
          • iOS SDK
          • Store Settings
            • Google Play Store Configuration
            • App Store Connect
            • ONE store
          • Login Authentication Settings
            • Google Login
            • Apple ID Login
            • Facebook Login
          • PUSH
          • Customer Support
          • User Statistics
          • Concurrent Users
          • Plugin
    • Interactive blocks
    • OpenAPI
    • Integrations
    • GamePot Console
      • 메인화면
      • 통합 대시보드
      • 대시보드
      • 분석
        • 사용자 분석
        • 매출 분석
      • 운영
        • 사용자
          • 목록
          • 일간 활성 사용자
          • 신규 등록 사용자
          • 동시 접속자
          • 이용정지
        • 구매
          • 목록
          • 앱 내 구매
          • 통계
          • 취소된 결제
          • 외부 결제
        • 점검 및 업데이트
          • 점검
          • 업데이트
        • 메시지
          • 푸시 알림
          • 문자 메시지
        • 쿠폰
          • 일반 쿠폰
          • 키워드 쿠폰
          • 쿠폰 사용량
        • 고객 지원
          • 대시보드
          • 고객 문의
          • 통계
          • 리뷰
          • 페이지
          • 설정
            • 일반
            • 규칙
            • 분류
            • 스타일링
            • 공지
            • FAQ
            • 정책 약관
            • 이메일 알림
        • 게임
          • 공지사항
          • 랭킹
          • 친구
          • 플레이어
          • 선물
          • 아이템
        • 게임 운영
          • 데이터 저장소
          • 원격 설정
          • 블랙리스트
      • 설정
        • 프로젝트 설정
        • 관리자
Powered by GitBook
On this page
  • 주요 기능
  • 푸시 사용 방법 (모바일)
  • 푸시를 설정하기 위한 코드 추가
  • 푸시 상태 변경
  • 푸시 테스트 방법(모바일)
  • 문제해결
  1. Basics
  2. GamePot 3.0
  3. GAMEPOT 3.0 (KR)
  4. GAMEPOT 사용

푸시

Previous스팀 로그인Next고객센터

Last updated 4 months ago

개발자가 서버 또는 클라우드에서 모바일 장치로 신뢰할 수 있고 효율적으로 메시지를 전송할 수 있게 합니다. 푸시를 사용하면 알림 메시지(시스템이 사용자에게 표시할 수 있는 메시지)와 데이터 메시지(앱이 처리하는 키-값 쌍의 데이터)를 모바일 앱과 웹 앱에 전송할 수 있습니다. 푸시는 iOS, Android, 웹 애플리케이션을 포함한 다양한 플랫폼을 지원합니다.

2024년 5월 15일부터 Firebase Cloud Messaging(FCM)은 270일 이상 비활성 상태였던 Android 기기에서 토큰이 만료됩니다. 귀하의 계정이 포함되면, 구독 취소 수가 증가할 수 있습니다.

주요 기능

  • 다양한 메시지 전송: 알림 메시지와 데이터 메시지를 포함하여 다양한 유형의 메시지를 전송할 수 있습니다.

  • 대규모 메시징: 수백만 명의 사용자에게 동시에 메시지를 보낼 수 있어, 대규모 애플리케이션의 효율적인 메시지 전송이 가능합니다.

  • 다양한 플랫폼 지원: iOS, Android, 웹 애플리케이션 등 다양한 플랫폼에서 메시지를 받을 수 있습니다.

  • 고급 메시징 옵션: 메시지 우선순위 설정, 수명(lifetime) 설정, 주제 기반 구독 및 조건부 메시지 전송 등 고급 기능을 제공합니다.

푸시 사용 방법 (모바일)

  1. Firebase 프로젝트 설정

    • Firebase 콘솔()에서 프로젝트를 생성합니다.

    • 생성된 프로젝트에 애플리케이션(안드로이드 또는 iOS)을 추가합니다.

  2. FCM SDK 추가

    • 안드로이드의 경우, (Module : app)과 (Module : project) 각각의 build.gradle.kt 파일에 정의를 추가합니다.

      // (Module : app)의 build.gradle.kts
      plugins {
      ...
         id("com.google.gms.google-services")
      }
      
      dependencies {
      ...
         implementation("com.google.firebase:firebase-messaging-ktx:23.2.1")
      }

      // (Module : project)의 build.gradle.kts
      plugins {
         ...
         id("com.google.gms.google-services") version "4.3.15" apply false
      }
    • iOS의 경우, CocoaPods을 사용하여 Firebase/Messaging pod를 설치합니다.

  3. 푸시 알림을 위한 권한 요청 (iOS)

    • iOS 앱의 경우, 사용자로부터 푸시 알림을 받을 수 있는 권한을 요청해야 합니다. UNUserNotificationCenter를 사용하여 요청할 수 있습니다.

  4. 디바이스 토큰 등록 및 메시지 수신

    • 앱이 설치되고 실행될 때, FCM SDK는 앱 인스턴스에 대한 고유한 토큰을 생성합니다. 이 토큰을 서버에 등록하여 특정 디바이스에 메시지를 전송할 수 있습니다.

    • 메시지 수신을 위해 애플리케이션에 리스너를 구현합니다.

FCM을 사용하면 애플리케이션의 사용자 참여도를 높이고, 중요한 정보를 신속하게 전달하며, 다양한 메시지 전송 시나리오를 지원하는 맞춤형 알림 시스템을 구축할 수 있습니다. FCM은 개발자가 클라우드 메시징을 쉽게 통합하고 관리할 수 있도록 다양한 도구와 API를 제공합니다

푸시를 설정하기 위한 코드 추가

푸시를 사용하기 위한 어떠한 작업도 필요 없습니다.

AppDelegate에 아래 코드를 추가합니다.

import NBase

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
    // 푸시 사용여부 퍼미션 허가 요청
    registerForRemoteNotifications()
    return true
}
func registerForRemoteNotifications() {
    let center = UNUserNotificationCenter.current()
    center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in
        if granted {
            DispatchQueue.main.async {
                UIApplication.shared.registerForRemoteNotifications()
            }
        } else {
            print("The push notification permission has been denied")
        }
    }
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let token = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
    // 토큰을 서버로 전송하여 저장하거나 사용합니다.
    NBase.setPushToken(token: token)
}

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    // 푸시 알림 등록에 실패했습니다. 오류: \(error.localizedDescription)
    NBase.setPushToken(token: "")
}

Tools -> GamePotSDK -> Edit Settings 에 Use Notification 를 체크해 주세요.

푸시 상태 변경

  • 푸시 수신 여부 설정을 변경하려면 아래 코드를 호출해 주십시오.

NBaseSDK.NBase.setPushState(enable, night, ad, token, (pushState, error) => {
    if (error != null)
    {
        // failed.
        // Display the message using error.message.
    }
    else
    {
        // succeeded.
    }
});
val pushToken = NBase.getPushToken()
val pushState = com.nbase.sdk.model.PushState(
    enable = enable,
    night = night,
    ad = ad,
    token = pushToken
)
NBase.setPushState(pushState) { status, e ->
    if (error != null) {
        // failed.
        // Display the message using error.message.
    } else {
        // succeeded.
    }
};
String pushToken = _NBase.getPushToken();
com.nbase.sdk.model.PushState pushState = new com.nbase.sdk.model.PushState(
        Boolean.parseBoolean(enable),
        Boolean.parseBoolean(night),
        Boolean.parseBoolean(ad),
        pushToken
);
NBase nBase = NBase.INSTANCE;
nBase.setPushState(pushState, (status, e) -> {
    if (e != null) {
        // failed.
        // Display the message using e.getMessage.
    } else {
        // succeeded.
    }
    return null;
});
NBase.setPushState(enable: enable, ad: ad, night: night, token: NBase.getPushToken()) { result in
    switch result {
    case .success(let data):
        // succeeded.
    case .failure(let error):
        // failed.
    }
}
[NBaseBridge.shared setPushState:enable night:night ad:ad token:token :^(NSDictionary * _Nullable result, NSError * _Nullable error) {
    if (error) {
        // failed.
        // Display the message using error.localizedDescription.
    } else {
        // succeeded.
    }
}];
  • 푸시 수신 여부 설정을 확인하려면 아래 코드를 호출해 주십시오.

NBaseSDK.NBase.getPushState((pushState, error) => {
    if (error != null)
    {
        // failed.
        // Display the message using error.message.
    }
    else
    {
        // succeeded.
    }
});
NBase.getPushState() { state, e ->
    if (error != null) {
        // failed.
        // Display the message using error.message.
    } else {
        // succeeded.
    }
};
NBase nBase = NBase.INSTANCE;
nBase.getPushState((state, e) -> {
    if (e != null) {
        // failed.
        // Display the message using e.getMessage.
    } else {
        // succeeded.
    }
    return null;
});
NBase.getPushState() { result in
    switch result {
    case .success(let data):
        // succeeded.
    case .failure(let error):
        // failed.
    }
}
[NBaseBridge.shared getPushState:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
    if (error) {
        // failed.
        // Display the message using error.localizedDescription.
    } else {
        // succeeded.
    }
}];

푸시 테스트 방법(모바일)

푸시 테스트는 세 가지 방법으로 검증이 가능합니다.

  1. 게임팟 대시보드에서 확인 방법 대시보드 -> 회원 목록 -> 회원 정보(자세히) 푸시 발송 버튼을 클릭하면 해당 회원에게 개별로 푸시 발송이 가능합니다.

  1. (AOS) Firebase 콘솔에서 테스트 방법

Firebase Console - 프로젝트 선택 - Messaging - 캠페인에서 새 캠페인 버튼을 클릭하여 메시지 발송 테스트를 할 수 있습니다.

앱에서 가져온 토큰을 복사하여 붙여넣기 후 +버튼을 눌러 토큰을 입력하여 테스트 버튼을 누르면 완료되며, 해당 토큰으로 발송이 되는지 확인 가능합니다.

  1. (iOS) CloudKit Console 에서 테스트 방법

Device Token 입력과 Payload 입력 후 해당 토큰으로 발송이 되는지 확인 가능합니다.

문제해결

Q. java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.nbase.main. Make sure to call FirebaseApp.initializeApp(Context) first.

A. 해당 오류는 gradle 파일에 푸시를 위한 설정이 누락된 경우 입니다. 아래 사항을 확인해 주시기 바랍니다. 프로젝트 최상단 build.gradle.kts

plugins {
   id("com.google.gms.google-services") version "4.4.1" apply false
}

를 추가해 준다. app 내에 build.gradle.kts 내에

plugins {
    id("com.google.gms.google-services")
}

Q. org.gradle.api.GradleException: File google-services.json is missing. The Google Services Plugin cannot function without it.

A. 해당 오류는 google-services.json 을 찾을 수 없는 경우 발생합니다. 해당 파일을 모듈 : 앱 단위의 루트 폴더에 올바르게 위치 했을지 확인이 필요합니다. (예시) ./project folder/app/google-services.json

-> Push Notifications 에 진입하여 새로운 Notifications을 생성합니다.

console.firebase.google.com
CloudKit Console