Note
최신 라이브러리는 아래 링크를 통해, 다운로드 받을 수 있습니다.
버전 | 버전 | 내용 |
---|---|---|
1.0.1 | 2024.07.19 | (iOS) static_framework 설정 변경, MPushLibrary 5.1.6 적용 (Android) morpheus_push_library_5.2.0.16 적용 |
1.0.0 | 2024.02.16 | 최초배포 |
설정 파일은 각 프로젝트 환경에 맞게 변경 적용이 필요
' yarn add ../rn-push-plugin/react-native-mpush '
MacBook:react user$ npx react-native init ReactProject //ReactProject프로젝트 생성
MacBook:react user$ cd ReactProject
MacBook:ReactProject user$ yarn add ../rn-push-plugin/react-native-mpush //모듈 추가
MacBook:ReactProject user$ npm run android //앱 실행
React Native 프로젝트에서 상대경로로 react-native-mpush 플러그인을 설치해야 합니다.
buildscript {
...
dependencies {
...
classpath 'com.google.gms:google-services:4.4.0'
}
}
//반드시, script 맨 하단에 작성
apply plugin: 'com.google.gms.google-services'
Notification 아이콘은 Application 아이콘으로 지정되어 있어 별도의 아이콘으로 적용하기 위해서는 AndroidManifest.xml > application 아이콘 이미지를 변경하거나 sample/android/FcmCustomNoti.java를 참고하여 notification 전달값을 변경하여 전달.
override fun onPostCreate(savedInstanceState: Bundle?) {
super.onPostCreate(savedInstanceState)
PushManager.getInstance().setCustomInstance(this, [커스텀Noti]::class.java)
}
<application>
<receiver
android:name="[fulepath].MessageArrivedReceiver"
android:exported="false">
<intent-filter>
<!--FCM 사용시 intent-filter-->
<action android:name="${applicationId}.GCM_MESSAGE_ARRIVED" />
<!--------------->
<!--UPNS 사용시 intent-filter -->
<action android:name="${applicationId}.UPNS_MESSAGE_ARRIVED" />
<!--------------->
<!--UPNS+FCM 사용시(아래 intent-filter 모두적용)-->
<action android:name="${applicationId}.GCM_MESSAGE_ARRIVED" />
<action android:name="${applicationId}.UPNS_MESSAGE_ARRIVED" />
<!--------------->
</intent-filter>
</receiver>
</application>
<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
<item name="android:textColor">#000</item> // Text 태그의 폰트 색상
<item name="android:textColorHint">#999</item> // TextInput 태그의 힌트 폰트 색상
<item name="android:editTextColor">#000</item> // TextInput 태그의 폰트 색상
</style>
' yarn add ../rn-push-plugin/react-native-mpush '
//ReactNative framework 없이 프로젝트 생성
MacBook:react user$ npx @react-native-community/cli@latest init ReactProject
//플러그인 추가
MacBook:react user$ cd ReactProject
MacBook:ReactProject user$ yarn add ../rn-push-plugin/react-native-mpush
// pod install
MacBook:ReactProject user$ cd ios
MacBook:ios user$ bundle install
MacBook:ios user$ bundle exec pod install
React Native 프로젝트에서 상대경로로 react-native-mpush 플러그인을 설치해야 합니다.
[[PushManager defaultManager] application:application didFinishLaunchingWithOptions:launchOptions];
#import "AppDelegate.h"
#import <React/RCTBundleURLProvider.h>
#import <MPushLibrary/MPushLibrary.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.moduleName = @"ReactProject";
// You can add your custom initial props in the dictionary below.
// They will be passed down to the ViewController used by React Native.
self.initialProps = @{};
//PushManager 초기화 및 메시지를 전달
[[PushManager defaultManager] application:application didFinishLaunchingWithOptions:launchOptions];
#ifdef DEBUG
/* APNS_MODE설정을 위한 값(4.0이상)
* 여러 위치 사용 가능 설명을 위해 PushReceiver.m 파일에도 샘플 코드가 있음 *
- APNS_MODE는 서버에서 메시지 발송시 APNS서버를 TEST로 발송할지 REAL로 발송할지의 대한 여부값이 됨
- RegisterService API호출시 서버에 해당값을 전달
- PushManager 초기화시 값이 설정되며 default 값은 REAL
- 개발용 인증서로 빌드시 APNS TOKEN값은 TEST토큰값이므로 DEV설정 필요
*/
[[PushManager defaultManager].info changeMode:@"DEV"];
#endif
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
return [self getBundleURL];
}
- (NSURL *)getBundleURL
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
}
@end
{
"aps": {
"alert": {
"body":"body"
"title":"title"
},
"badge": 1,
"mutable-content": 1,
"sound": "alert.aif"
},
"mps": {
"cuid":"testCUID"
"ext": "8||https://umsapi.morpheus.kr/data/nas/image.png|",
"appid": "com.uracle.push.test",
"psid": "eddf0fb943b8b13e4ee9b3268e7854b59a43f2c63d99f1a405b0a2383cf55718"
"pushkey": "fa0ef0f129cb4cd1addbdb2984fb655d042eb74d"
"seqno": "1247292",
"sender": "admin",
"senddate": "2024022309",
"db_in": "Y"
}
}
푸시 관련 기능을 제공한다.
Arguments
Example:
mPush.registerServiceAndUser({
cuid:"tester",
name:"testerName"
},
(callback :any) => {
console.log("registerServiceAndUser result \n\n"+callback);
});
Arguments
Example:
mPush.unregisterService(
(callback :any) => {
console.log("unRegisterService result \n\n "+callback);
}
);
Arguments
Example:
mPush.unregisterUser(
(callback :any) => {
console.log("unRegisterUser result \n\n "+callback);
}
);
Arguments
Example:
mPush.sendNotification({
cuid : 'tester',
serviceCode: 'ALL',
message:'기본알림입니다.'
},
(callback :any) => {
console.log("sendNotification result \n\n "+callback);
}
);
Arguments
mPush.readNotification({
notification: noti
},
(callback :any) => {
console.log("readNotification result \n\n "+callback);
}
);
Arguments
Example:
mPush.remoteSetBadge({
badge:10
},
(callback :any) => {
setResult("remoteSetBadge result \n\n "+callback);
}
);
Arguments
Example:
mPush.notificationCenterGetBadgeNumber(
(callback :any) => {
setResult("notificationCenterGetBadge = " + callback);
}
);
Arguments
Example:
mPush.notificationCenterGetBadgeNumber(
(callback :any) => {
setResult("notificationCenterGetBadge = " + callback);
}
);