모피어스 MADP에 Push 플러그인을 적용하는 방법
Note MADP용 플러그인은 IDE의 M-SDK Manager를 통해 다운로드 및 프로젝트에 적용
샘플 프로젝트는 아래 링크를 통해, 다운로드 받을 수 있습니다.
buildscript{
...
dependencies {
classpath 'com.google.gms:google-services:4.3.15' //추가
}
}
...
apply plugin: 'com.google.gms.google-services' //반드시, script 맨 하단에 작성
Duplicate class com.google.gson.. 이슈로 build 실패 시 implementation fileTree를 아래와 같이 수정(excludes로 해당 라이브러리 참조 제거) implementation fileTree(dir: 'mcoreLibs', excludes: ['android-support-v4.jar','gson.jar', 'androidx.exifinterface-exifinterface-1.3.2.jar'], include: ['.jar','.aar'])
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PushManager.getInstance().setCustomInstance(this, FcmCustomNoti.class);
commLibHandle.processAppInit(this);
}
override fun onPostCreate(savedInstanceState: Bundle?) {
super.onPostCreate(savedInstanceState)
PushManager.getInstance().setCustomInstance(this, FcmCustomNoti::class.java)
commLibHandle.processAppInit(this)
}
예시로 제공한 FcmCustomNoti.java 파일을 적용했을 경우를 기반으로 작성되었으며 해당 파일명은 변경이 가능하며, 변경된 클래스로 설정을 변경할 수 있습니다.
Notification 옵션 항목 및 옵션 적용방법 예시
- NotificationBuilder class
- basic notification을 사용하는 경우 알림 아이콘은 Application 아이콘으로 지정되어 있으며, icon을 변경해야하는 경우 NotificationBuilder를 참고하여 style을 수정해서 전달하는 방법으로 사용하실 수 있습니다.
발송한 메시지의 페이로드 데이터를 수신 한 이후에 별도로 처리해야 하는 영역으로, 아래 첨부파일을 참고하여 적용하실 수 있습니다.
압축 파일 내의 android 폴더 > FcmNotifyHelper, MessageArrivedReceiver, PushMessageManager 파일 참고
<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>
- mpush 이외의 FCM을 별도로 사용하는 프로젝트의 경우 아래 주소를 참고하시어 CustomMessagingService를 적용하실 수 있습니다. https://developer.uracle.co.kr/faq/?mod=document&pageid=1&keyword=CustomMessagingService&uid=2704
AppDelegate가 MPAppDelegate를 상속 받았을 경우에 메서드 Swizzling을 사용하여 Push 라이브러리 초기화가 이루어집니다.
Push 라이브러리 초기화시 라이브러리내에 MPushReceiver가 PushManagerDelegate로 지정이 됩니다.
MPushReceiver에서 메시지 수신 처리시 스크립트 function oniOSReceiveNotification(ns) 로 메시지가 전달됩니다.
-> 수동으로 라이브러리 초기화를 진행하거나 수신처리를 변경하고자 할 경우에는 아래 코드를 참고하세요
// AppDelegate.m 파일
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//수동으로 초기화를 할 경우
//모피어스 라이브러리 초기화
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
navigationController = [MAppDelegate initialViewControllerWithLaunchOptions:launchOptions];
[window setBackgroundColor:[UIColor blackColor]];
[window setRootViewController:navigationController];
[window makeKeyAndVisible];
//Push 라이브러리 초기화
[[PushManager defaultManager] application:application didFinishLaunchingWithOptions:launchOptions];
//PushManagerDelegate 지정 ( PushReceiver )
[[PushManager defaultManager] initilaizeWithDelegate:[[PushReceiver alloc] init]];
//Swizzling을 사용하여 초기화 경우
//return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- 메시지 수신 이벤트 처리 변경시 PushReceiver 샘플 파일 : PushReceiver.zip
{
"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"
}
}
푸쉬 관련 API는 아래 링크를 참고 바랍니다.