ARCHIVES

태그

신고하기

상단 메뉴 페이지

기본 콘텐츠로 건너뛰기

Android. 플랫폼 푸시 테스트 (카카오푸시 vs 핑거푸시 vs 원시그널)

안드로이드 푸시 구현 이후에 아이폰 푸시를 구현 하기 전, 

편리하게 사용하기 위해 플랫폼을 사용해서 푸시를 전송 해본다.

1. 카카오 푸시


카카오 가이드가 잘 되어 있다.

프로젝트 만들고, GCM Key를 넣고, 포스트맨으로 푸시 전송.


1. 푸시 토큰 등록
   가이드대로 프로젝트를 만들고 헤더를 넣고 호출 해본다.

2. 토큰 조회

3. 푸시 호출
확인사항은 uuids 가 숫자 이어야 한다는 것과 모든 토큰 조회가 없다는것(?)

잘되는것 확인.
푸시 서버를 구축 할 때, 겸용한다면 손쉬운 구축이 될듯하다.
지금은 무료인데 앞으로는 어떨지...


2. 핑거 푸시

국내 푸시 업체 중 한곳을 테스트 한다.


카카오가 RestApi 만을 제공하는것에 비해 온라인 대시 보드도 제공하고,
기본적으로 사용하려면 유료결제를 해야하고 많은 기능이 있는 업체다.
1년 무료 테스트 기간을 준다.
(테스트에 제약이 많다. 차라리 30일 전체기능이용이 좋지 않을까?)

안드로이드 : https://helloworld.fingerpush.com/android-sdk-manual/
안드로이드 : 샘플 코드

아이폰 : https://helloworld.fingerpush.com/ios-sdk-manual/

메뉴얼이 무척 자세히 나와 있다.




전송 규약정리 : 핑거푸시 에이전트 규약

서버 설치형 에이전트 를 제공한다.
제공 환경은 윈도우와 리눅스, '맥' 설명은 없어서 스킵한다. 

Agent : 에이전트

RestApi를 사용 할 수 있으면 좋겠지만.
Agent로 대체한듯 하다. Agent는 결제를 해야지 사용할 수 있다.


3. 원시그널

 - 글로벌 사이트
 - OneSignal은 웹 사이트 및 모바일 응용 프로그램을위한 무료 푸시 알림 서비스
 - 각 플랫폼에 전용 SDK를 제공하여 모든 주요 네이티브 및 모바일 플랫폼을 지원
 - RESTful 서버 API 및 마케터가 푸시 알림을 디자인하고 보내는 온라인 대시 보드를 제공
 - 무료 계정에서 Rest API를 제공한다. 가격
 - 지인이 무료 계정으로 실제 서비스 까지 가능하다고 조언함.

안드로이드 : 원시그널 가이드
안드로이드 : 샘플코드


영문 사이트라서 자세히 적어본다.
프로젝트 새로 시작하면서 적용한다.

1. 원시그널 회원가입
2. 원시그널 샘플 프로젝트 실행 
    - 2020.1015 기준으로 Kotlin 프로젝트를 다운 받아 실행하면 안된다, --; 가이드 보고 하자.
    - 가이드에서는 build.gradle(app) 에 몽땅 때려 넣으라고 되어 있는데, 순서가 중요하다.
    - apply plugin: 'com.android.application' 위쪽에 붙여야 한다.

build.gradle (project)
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = "1.4.10"
repositories {
google()
jcenter()
maven { url 'https://plugins.gradle.org/m2/'}
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.1"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:0.12.9'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
google()
jcenter()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}

repositories {
maven { url 'https://maven.google.com' }
}

build.gradle (app)
원시그널 플러그인이 최상단에 있어야 한다.
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 30
buildToolsVersion "30.0.2"

defaultConfig {
manifestPlaceholders = [
onesignal_app_id: '9ca1dcf7-557a-4fa2-8c17-44e0c3e352b9',
// Project number pulled from dashboard, local value is ignored.
onesignal_google_project_number: 'REMOTE'
]

applicationId
"com.jhchoo.onesignalandroidkotlin"
minSdkVersion 23
targetSdkVersion 30
versionCode 1
versionName "1.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}

dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation
"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.1'
implementation 'androidx.navigation:navigation-ui-ktx:2.3.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

implementation 'com.onesignal:OneSignal:3.15.3'
}
MainActivity
class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// OneSignal Initialization
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
.unsubscribeWhenNotificationsAreDisabled(true)
.init();
} }

이제 홈페이지에서 날려보자.


이제 포스트맨으로 날려보자.


1. RestApi 키를 획득한다.

2. 전송 해본다.

잘되는것 확인.

3줄 감상평.

1. 영어 울렁증이 없으면, 원시그널이 가장 좋다.
2. 서버를 구현해서 푸시를 던질거면 카카오도 괜찮다
3. 서버는 모르겠고, Agent를 설치해서 사용할거면 핑거푸시.




댓글