안 드 로 이 드 폰 엔 드 샤 오미 푸 시 데모 분석 및 구현 방법
푸 시
최근 프로젝트 가 안 드 로 이 드 메 시 지 를 사용 하기 때문에 안 드 로 이 드 푸 시 에 관 한 해결 방안 은 여러 가지 가 있 습 니 다.C2DM,폴 링,SMS,MQTT 프로 토 콜,XMPP 프로 토 콜 과 제3자 플랫폼 이 있 습 니 다.저희 가 프로젝트 수 요 를 고려 한 후에 우 리 는 제3자 플랫폼 에서 푸 시 한 샤 오미 푸 시 를 선 택 했 습 니 다.다음은 샤 오미 푸 시 실현 방법 입 니 다.
준 비 를 실현 하 다
샤 오미 로 푸 시 하려 면 먼저 샤 오미 개발 자 플랫폼 에 가서 개발 자 계 정 을 등록 하고 1~3 일간 의 심 사 를 거 쳐 통과 한 뒤 푸 시 서 비 스 를 신청 할 수 있다.앱 의 푸 시 서 비 스 를 신청 한 후에 앱 ID 와 앱 키 를 얻 으 면 데모 에 사용 하 는 것 을 배 울 수 있 습 니 다.다음은 제 가 데모 에 대한 이 해 를 말씀 드 리 겠 습 니 다.
푸 시 설명
푸 시 내용 은 백 스테이지 서버 에서 샤 오미 가 푸 시 하 는 SDK 를 이용 하여 발송 할 수 있 고 샤 오미 의 푸 시 플랫폼 에서 도 발송 할 수 있 으 며 보 내 는 메 시 지 는 두 가지 가 있 습 니 다.알림 메시지 와 투과 정보 입 니 다.
알림 메시지:
안 드 로 이 드 시스템 알림 표시 줄 에 표시 되 는 메시지 입 니 다.사용자 가 응답 이 벤트 를 클릭 하면 스스로 실행 하거나 보 낼 때 앱 을 여 는 것 을 설명 합 니 다.
메시지 전달:
즉,투명 전송,즉 전송 네트워크 는 전송 업무 가 어떻든 전송 이 필요 한 업 무 를 목적 노드 로 전송 하 는 동시에 전송 의 질 을 확보 하면 되 고 전송 업 무 를 처리 하지 않 는 다.앱 에 직접 메 시 지 를 전달 하 는 것 으로 알림 표시 줄 에 자동 으로 표시 되 지 않 습 니 다.
공식 데모 설명
공식 적 으로 제 시 된 데모 에 서 는 샤 오미 가 푸 시 하 는 각종 설정 과 수신 푸 시 를 어떻게 실현 하 는 지 간단하게 보 여 주 었 다.Demo 는 먼저 샤 오미 가 푸 시 한 SDK 를 Library 에 추가 한 다음 에 그 안에 4 개의 자바 파일 이 있다.그림 과 같다.
네 번 째 Dialog 는 보지 않 아 도 됩 니 다.관건 은 DemoMessage Receiver 라 는 라디오 수신 기 입 니 다.푸 시 된 각종 정 보 를 받 고 처리 하 는 것 입 니 다.그리고 그 데모 애플 리 케 이 션 과 MainActivity 는 정 보 를 받 은 디 스 플레이 를 실현 하 는 데 사 용 됩 니 다.
그리고 화면 이 이 렇 습 니 다.
푸 시 에 대한 설정 과 Log 를 표시 하 는 TextView주로 좁쌀 푸 시 사용 과정 을 보 여 주 었 다.
DemoMessage Receiver 방송 수신 기
샤 오미 가 푸 시 하 는 모 바 일 수신 을 실현 하려 면 핵심 은 위 에서 말 한 가장 주요 한 DemoMessage Receiver 라 는 방송 수신 기 이다.샤 오미 SDK 의 PushMessage Receiver 클래스 를 계승 한 이 라디오 수신 기 는 아래 의 5 개의 리 셋 방법 을 다시 써 서 푸 시 처리 할 수 있 습 니 다.
@Override
public void onReceivePassThroughMessage(Context context, MiPushMessage miPushMessage) {
// , 。
}
@Override
public void onNotificationMessageClicked(Context context, MiPushMessage miPushMessage) {
// , 。
}
@Override
public void onNotificationMessageArrived(Context context, MiPushMessage miPushMessage) {
// , 。
}
@Override
public void onReceiveRegisterResult(Context context, MiPushCommandMessage miPushCommandMessage) {
//
}
@Override
public void onCommandResult(Context context, MiPushCommandMessage miPushCommandMessage) {
// 。 , 、 , 。
}
데모 어 플 리 케 이 션 계승 어 플 리 케 이 션 클래스이 애플 리 케 이 션 류 의 주요 기능 은 앱 의 ID 와 KEY 를 설정 하고 onCreate 방법 에 푸 시 서 비 스 를 등록 하 는 것 입 니 다.
이 데모 에 서 는 라디오 수신 기 가 Toast 를 보 내 고 MainActivity 가 Log 를 TextView 에 인쇄 할 수 있 도록 Handler 를 만 들 었 습 니 다.
// user your appid the key.
private static final String APP_ID = "1000270";
// user your appid the key.
private static final String APP_KEY = "670100056270";
// TAG adb logcat , adb logcat | grep
// com.xiaomi.mipushdemo
public static final String TAG = "com.xiaomi.mipushdemo";
private static DemoHandler sHandler = null;
private static MainActivity sMainActivity = null;
@Override
public void onCreate() {
super.onCreate();
// push , DemoMessageReceiver
// DemoMessageReceiver onCommandResult MiPushCommandMessage
if (shouldInit()) {
MiPushClient.registerPush(this, APP_ID, APP_KEY);
}
LoggerInterface newLogger = new LoggerInterface() {
@Override
public void setTag(String tag) {
// ignore
}
@Override
public void log(String content, Throwable t) {
Log.d(TAG, content, t);
}
@Override
public void log(String content) {
Log.d(TAG, content);
}
};
Logger.setLogger(this, newLogger);
if (sHandler == null) {
sHandler = new DemoHandler(getApplicationContext());
}
}
//
private boolean shouldInit() {
ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE));
List<RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
String mainProcessName = getPackageName();
int myPid = Process.myPid();
for (RunningAppProcessInfo info : processInfos) {
if (info.pid == myPid && mainProcessName.equals(info.processName)) {
return true;
}
}
return false;
}
MainActivityDemo 안의 MainActivity 는 주로 인터페이스의 버튼 처 리 를 실현 합 니 다.이 를 통 해 로 컬 푸 시 방안 을 어떻게 설정 하 는 지 알려 줍 니 다.구체 적 인 설정 은
우선 샤 오미 푸 시 지원 이 가장 낮은 안 드 로 이 드 버 전 은 2.2 이기 때문에
<uses-sdk android:minSdkVersion="8"/>
다음 권한 이 필요 합 니 다:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.VIBRATE" />
<permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE" android:protectionLevel="signature" />
<!-- com.xiaomi.mipushdemo app -->
<uses-permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE" />
<!-- com.xiaomi.mipushdemo app -->
그 다음 에 BroadcastReceiver(모두 정적 등록 입 니 다.장시간 백 스테이지 에서 실행 되 어야 하기 때문에 PushMessage Receiver 를 계승 한 DemoMessage Receiver 도 등록 해 야 합 니 다.잊 지 마 세 요)와 Service 는 모두 3 개의 방송 수신 기와 4 개의 서비스 입 니 다.
<service
android:enabled="true"
android:process=":pushservice"
android:name="com.xiaomi.push.service.XMPushService"/>
<service
android:name="com.xiaomi.push.service.XMJobService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":pushservice" />
<!-- : service 3.0.1 ( 3.0.1 ) -->
<service
android:enabled="true"
android:exported="true"
android:name="com.xiaomi.mipush.sdk.PushMessageHandler" />
<service android:enabled="true"
android:name="com.xiaomi.mipush.sdk.MessageHandleService" />
<!-- : service 2.2.5 ( 2.2.5 ) -->
<receiver
android:exported="true"
android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver
android:exported="false"
android:process=":pushservice"
android:name="com.xiaomi.push.service.receivers.PingReceiver" >
<intent-filter>
<action android:name="com.xiaomi.push.PING_TIMER" />
</intent-filter>
</receiver>
<receiver
android:name="com.xiaomi.mipushdemo.DemoMessageReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
</intent-filter>
<intent-filter>
<action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
</intent-filter>
<intent-filter>
<action android:name="com.xiaomi.mipush.ERROR" />
</intent-filter>
</receiver>
데모 의 AppId 와 AppKey 를 자신의 것 으로 바 꾸 면 해당 하 는 푸 시 를 받 을 수 있 습 니 다.이동 단 이식 실현
이 Demo 를 대충 이해 한 후에 샤 오 미 를 자신의 App 에 옮 겨 자신의 수 요 를 실현 할 수 있 습 니 다.이식 할 때 주의해 야 합 니 다.
4.567917.먼저 응용 프로그램의 가방 이름 을 잘 생각 하고 샤 오미 푸 시 플랫폼 에서 등록 하여 AppID 와 AppKey 를 받 아야 한다샤 오미 가 밀어 준 SDK 를 창고 에 넣 고 있 습 니 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.