Note
최신 라이브러리는 아래 링크를 통해, 다운로드 받을 수 있습니다.
버전 | 버전 | 내용 |
---|---|---|
1.0.2 | 2024.08.19 | (Android)플러그인 외부 소스코드 내재화 morpheus_push_library_5.2.0.18 적용 |
1.0.1 | 2024.07.22 | 샘플 프로젝트 추가 (iOS) MPushLibrary 5.1.6 적용 (Android) morpheus_push_library_5.2.0.16 적용 |
1.0.0 | 2024.02.01 | 최초배포 |
설정 파일은 각 프로젝트 환경에 맞게 변경 적용이 필요
(경로1) workspace > cordova-push-plugin - cordova plugin add ../cordova-push-plugin/MPushPlugin
(경로2) workspace > [프로젝트] > cordova-push-plugin - cordova plugin add ./cordova-push-plugin/MPushPlugin
[경로1 방법으로 라이브러리 적용 예시]
MacBook:Cordova user$ cordova create cProject
MacBook:Cordova user$ cd cProject
MacBook:cProject user$ cordova platform add android
MacBook:cProject user$ cordova plugin add ../cordova-push-plugin/MPushPlugin
Cordova 프로젝트에서 상대경로로 MPushPlugin을 설치해야 합니다.
//앱 실행중 notification 선택 이후처리
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.e("onNewIntent::","onNewIntent");
String notification = intent.getStringExtra("JSON");
JSONObject payload = new JSONObject();
try {
payload.put("status", "SUCCESS");
payload.put("payload", notification);
loadUrl("javascript:getNotification(" + payload.toString() + ")");
} catch (JSONException e) {
}
}
//앱이 종료되었을 경우 notification 선택 이후처리
@Override
public Object onMessage(String id, Object data) {
Log.e("onmessage::",id);
if (id.equals("onPageFinished")){
Intent intent = getIntent();
String notification = intent.getStringExtra("JSON");
JSONObject tempJSON = new JSONObject();
try {
tempJSON.put("status", intent.getStringExtra("PUSH_STATUS"));
tempJSON.put("payload", notification);
loadUrl("javascript:getNotification(" + tempJSON.toString() + ")");
} catch (Exception e) {
e.printStackTrace();
}
}
return super.onMessage(id, data);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PushManager.getInstance().setCustomInstance(this, FcmCustomNoti.class);
}
override fun onPostCreate(savedInstanceState: Bundle?) {
super.onPostCreate(savedInstanceState)
PushManager.getInstance().setCustomInstance(this, FcmCustomNoti::class.java)
}
예시로 제공한 FcmCustomNoti.java 파일을 적용했을 경우를 기반으로 작성되었으며 해당 파일명은 변경이 가능하며, 변경된 클래스로 설정을 변경할 수 있습니다.
Notification 옵션 항목 및 옵션 적용방법 예시
- NotificationBuilder class
- basic notification을 사용하는 경우 알림 아이콘은 Application 아이콘으로 지정되어 있으며, icon을 변경해야하는 경우 NotificationBuilder를 참고하여 style을 수정해서 전달하는 방법으로 사용하실 수 있습니다.
발송한 메시지의 페이로드 데이터를 수신 한 이후에 별도로 처리해야 하는 영역으로, 아래 첨부파일을 참고하여 자체 비즈니스 규격에 따라 적용하실 수 있습니다.
압축 파일 내의 android 폴더 > FcmNotifyHelper, MessageArrivedReceiver, PushNotificationManager 파일 참고
<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>
'cordova plugin add ../cordova-push-plugin/MPushPlugin'
MacBook:Cordova user$ cordova create cProject
MacBook:Cordova user$ cd cProject
MacBook:cProject user$ cordova platform add ios
MacBook:cProject user$ cordova plugin add ../cordova-push-plugin/MPushPlugin
Cordova 프로젝트에서 상대경로로 MPushPlugin을 설치해야 합니다.
{
"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.remote.registerServiceAndUser({
cuid: 'tester',
name: 'testerName',
callback: function( result ) {
if (result.status == 'SUCCESS') {
console.log('서비스/유저 등록을 성공 하였습니다.');
}
else {
console.log('서비스/유저 등록을 실패 하였습니다.');
}
}
});
Arguments
Example:
MPush.remote.unregisterService({
callback: function( result ) {
if(result.status == 'SUCCESS') {
console.log('서비스 해제가 성공 하였습니다.');
}
else {
console.log('서비스 해제가 실패 하였습니다.');
}
}
});
Arguments
Example:
MPush.remote.unregisterUser({
callback: function( result ) {
if(result.status == 'SUCCESS') {
console.log('사용자 해제가 성공 하였습니다.');
}
else {
console.log('사용자 해제가 실패 하였습니다.');
}
}
});
Arguments
Example:
MPush.remote.send({
cuid:'tester',
code: 'ALL',
message: '기본알림입니다.',
callback: function( result ) {
if (result.status == 'SUCCESS') {
console.log('메세지를 발송하였습니다.');
}
else {
console.log('메세지발송을 실패하였습니다.');
}
}
});
Arguments
MPush.remote.read({
notification: noti.payload, // noti는 전달된 푸시데이터이다.
callback: function (result) {
if (result.status !== 'SUCCESS') {
// 실패한 경우
console.log(result.error);
}
}
});
Arguments
Example:
MPush.remote.setBadge({
badge: 15,
callback: function( result ) {
if (result.status == 'SUCCESS') {
log('성공\n'+ JSON.stringify(result));
}
else {
log(result);
}
}
});
Arguments
Example:
MPush.notificationCenter.badge({
badge: 10,
callback: function( result ) {
console.log('클라이언트 뱃지 설정 성공\n'+ JSON.stringify(result));
}
});
Arguments
Example:
var result = M.plugin('push').notificationCenter.badge({
callback: function( result ) {
console.log('클라이언트 뱃지 값\n'+ JSON.stringify(result));
}
});
console.log('badge count : '+ result);