안 드 로 이 드 스튜디오 가.so 파일 을 가 져 오 는 방법 을 설명 하 는 인 스 턴 스 입 니 다.

다음은 자신 이 쓴 demo 입 니 다.공식 demo 가 아 닙 니 다.안 드 로 이 드 스튜디오 에서.so 파일 을 어떻게 가 져 오 는 지 에 대한 절차 와 방법 을 말씀 드 리 겠 습 니 다.아래 에 댓 글 을 달 아 지적 해 주 시 는 것 을 환영 합 니 다.
1.안 드 로 이 드 스튜디오 는 극광 푸 시 jar 패키지 와.so 라 이브 러 리 파일 을 어떻게 불 러 옵 니까?
2.추가 필드 의 키 에 대응 하 는 값 을 어떻게 가 져 옵 니까?
3.알림 표시 줄 을 클릭 하여 webView 로 딩 페이지 에 들 어 가 는 방법 을 알려 줍 니 다.
4.추 송 된 메 시 지 를 어떻게 저장 하고 listView 로 표시 하면 추 송 역 사 를 볼 수 있 습 니까?
5.어떻게 listView 의 item 을 클릭 하여 웹 페이지 를 뛰 어 넘 고 webView 로 딩 페이지 에 다시 들 어 갑 니까?
6.푸 시 설정 에 방해 가 되 지 않 는 시간 대 입 니 다.(copy 공식 demo).
7,속성 애니메이션 효과.
나 는 이 글 을 쓸 수 있 었 고 극광 에 의 해 여러 번 학대 당 했다.내 가 포기 하려 고 할 때 마침내 문제 의 소 재 를 발견 했다.이 문 제 는 내 가 부주의 해서 생 긴 것 인지,어떤 문제 에 대해 서 는 잠시 후에 다시 이야기 하 자.
이 글 의 마지막 부분 에 제 가 쓴 demo 가 있 습 니 다.여러분 이 다운로드 해 보 세 요.바로 다운로드 포인트 가 좀 많 습 니 다.공식 적 으로 자동 으로 생 성 된 demo 가 아 닙 니 다.유일한 공통점 은 방 해 받 지 않 는 시간 대 를 설정 하 는 것 입 니 다.예전 에 극광 에 시 달 렸 을 때 도 demo 를 많이 찾 아 보 았 습 니 다.그러나 그 demo 는 공식 원판 이거 나 조금 바 꾸 었 습 니 다.여전히 국 을 바 꾸 고 약 을 바 꾸 지 않 습 니 다.그리고 저 에 게 많은 포 인 트 를 주 었 습 니 다.그리고 제목 은 제 가 쓴 demo 라 고 말 했 습 니 다.저 는 하하 했 습 니 다.정말 양심 이 없습니다.제 demo 는 좋 은 말 을 할 수 없 지만 적어도 공식 demo 가 아니 라 인터페이스 가 괜 찮 은 편 입 니 다.적어도 저 는 그렇게 생각 합 니 다.조금 만 더 말씀 드 리 면 제 demo 나 이 글 은 극광 으로 보 내 고 싶 지만 어디서부터 손 을 대야 할 지 모 르 는 초보 자 에 게 어 울 리 지 않 을 뻔 했 습 니 다.또는 나 처럼 여러 번 학 대 를 받 은 사람 이 서버 에서 어떻게 쓰 는 지 물 어보 고 싶다 면 이 글 은 demo 와 어 울 리 지 않 습 니 다.당신 의 수준 이 나 를 넘 어 섰 을 것 입 니 다.이 글 은 주로 일반 푸 시 를 이용 하여 쓸데없는 말 을 하고 본론 으로 들 어 갑 니 다.
우선 극광 의 푸 시 를 받 으 려 면 어느 정도 받 아야 받 을 수 있 는 지,틀 리 지 않 는 지 를 명 확 히 하 세 요.공식 적 으로 준 demo 의 종 류 는 제 가 완전히 복사 해 야 한 다 는 말 이 있 습 니까?아니면 몇 개 복사 해 야 한다 고 말 합 니까?그럼 지금 말씀 드 리 겠 습 니 다.공식 demo 의 종 류 는 사실 하나 도 복사 하지 않 아 도 받 을 수 있 지만 전 제 는 manifest.xml 목록 파일 을 설정 해 야 합 니 다.다음은 첫 번 째 단계 로 들 어 갑 니 다.
1.안 드 로 이 드 스튜디오 는 극광 푸 시 jar 패키지 와.so 라 이브 러 리 파일 을 어떻게 불 러 옵 니까?
극광 푸 시 홈 페이지 에 안 드 로 이 드 버 전에 대한 푸 시 sdk 를 다운로드 하고 압축 을 푸 십시오.다음 그림:

liibs 디 렉 터 리 에 저 장 된 것 은 추 송 된 jar 패키지 와 핸드폰 구 조 를 지원 하 는 접미사 입 니 다.so 라 이브 러 리 파일 입 니 다.res 디 렉 터 리 에 저 장 된 것 은 xml 파일 과 일부 그림 입 니 다.이 파일 들 은 부 미디어 메 시 지 를 받 기 위해 res 디 렉 터 리 에 있 는 파일 을 해당 디 렉 터 리 에 직접 복사 하면 됩 니 다.libs 디 렉 터 리 에 있 는 파일 은 주로 말 해 야 합 니 다.

이 안 에는 기본적으로 arm 구조의 각종 버 전이 포함 되 어 있 습 니 다.만약 에 핸드폰 이나 시 뮬 레이 터 의 시스템 구조 가 x86 또는 mip 라면 극광 홈 페이지 에 가서 해당 하 는 버 전 을 다운로드 할 수 있 습 니 다.그리고 극광 푸 시 sdk 의 jar 가방 도 있 습 니 다.안 드 로 이 드 스튜디오 는 jar 파일 을 어떻게 통합 하 는 지 전에 제 블 로 그 를 뒤 져 도 된다 고 했 습 니 다.지금 은'so 라 이브 러 리 파일 을 어떻게 불 러 오 는 지'만 남 았 습 니 다.나 도 이전에 여러 가지 방법 을 찾 았 지만 마지막 으로 한 가지 만 유용 하 다.그것 이 바로 극광 홈 페이지 가 제공 하 는 그 방법 이다.다음 과 같은 그림 이다.

상기 두 단 계 를 완성 하면 jar 패키지 와.so 라 이브 러 리 파일 을 설정 합 니 다.본인 이 직접 테스트 할 수 있 습 니 다.
2.추가 필드 의 키 에 해당 하 는 값 을 어떻게 가 져 옵 니까?극광 푸 시 공식 문 서 를 엽 니 다.다음 그림:



상기 2 개의 action 과 3 개의 상수 로 클 라 이언 트 가 푸 시 부분 을 80%받 는 부분 을 완성 할 수 있 습 니 다.제 demo 는 이 2 개의 action 과 3 개의 상수 에 따라 만 든 것 입 니 다.다음은 이러한 action 과 상수 의 캡 처 를 구체 적 으로 어떻게 사용 하 는 지 입 니 다.


3,3,알림 표시 줄 알림 을 클릭 하여 webView 로 딩 페이지 에 들 어 가 는 방법.
알림 표시 줄 알림 을 누 르 면 웹 뷰 로 딩 페이지 에 들 어 갑 니 다.먼저 알림 을 누 르 고 이 action 을 감청 해 야 합 니 다.그리고 웹 뷰 인터페이스 가 있어 야 합 니 다.다음 그림 입 니 다.

4.추 송 된 메 시 지 를 어떻게 저장 하고 listView 로 표시 하면 추 송 역 사 를 볼 수 있 습 니까?


최종 listView 에 표 시 된 item 은 다음 과 같 습 니 다.

5.어떻게 listView 의 item 을 클릭 하여 웹 페이지 를 뛰 어 넘 고 webView 로 딩 페이지 에 다시 들 어 갑 니까?
이것 은 간단 합 니 다.onItemClick 사건 을 직접 감청 하면 됩 니 다.다음 그림:

6,어떻게 푸 시 를 위해 방해 없 는 시간 대 를 설정 합 니까?
직접 copy 공식 demo,할 말 없어,공식 demo 참조
7,속성 애니메이션 효과.
이것 도 제 가 지난 블 로그 에서 말씀 드 린 것 입 니 다.뒤 져 볼 수 있 습 니 다.저 는 지난 블 로그 의 예 를 이번 demo 의 메 인 화면 으로 직접 보 았 습 니 다.괜 찮 은 것 같 습 니 다.
전에 제 가 학 대 를 당 했다 고 했 는데 사실은 모두 부주의 로 인해 발생 한 것 입 니 다.저 는 manifest.xml 파일 을 설정 할 때 가방 이름 을 적 게 설정 하고 빈 지침 오 류 를 알려 주 었 습 니 다.나중에 발견 한 후에 모든 ok 을 고 쳤 습 니 다.관건 은 세심 해 야 합 니 다.여기 서 자신 이 이미 고 친 전체 목록 파일 을 보 여 주 었 습 니 다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.administrator.jiguangpush"
     android:versionCode="181"
     android:versionName="1.8.1">
  <!--   7         ,        !!!!!!!!!!!!!!!!!!!!!-->
  <!-- Required                -->
  <permission
    android:name="com.example.administrator.jiguangpush.permission.JPUSH_MESSAGE"
    android:protectionLevel="signature"/>
  <!-- Required          ,       -->
  <uses-permission android:name="com.example.administrator.jiguangpush.permission.JPUSH_MESSAGE"/>
  <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.WAKE_LOCK"/>
  <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
  <uses-permission android:name="android.permission.VIBRATE"/>
  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
  <!-- Optional for location -->
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
  <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
  <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity
      android:name=".MainActivity"
      android:label="@string/app_name">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
 
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
    </activity>
 
    <!-- Required SDK          -->
    <activity
      android:name="cn.jpush.android.ui.PushActivity"
      android:configChanges="orientation|keyboardHidden"
      android:exported="false">
      <intent-filter>
        <action android:name="cn.jpush.android.ui.PushActivity"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="com.example.administrator.jiguangpush"/>
      </intent-filter>
    </activity>
    <!-- Required SDK           -->
    <service
      android:name="cn.jpush.android.service.DownloadService"
      android:enabled="true"
      android:exported="false">
    </service>
    <!-- Required SDK           -->
    <service
      android:name="cn.jpush.android.service.PushService"
      android:enabled="true"
      android:exported="false">
      <intent-filter>
        <action android:name="cn.jpush.android.intent.REGISTER"/>
        <action android:name="cn.jpush.android.intent.REPORT"/>
        <action android:name="cn.jpush.android.intent.PushService"/>
        <action android:name="cn.jpush.android.intent.PUSH_TIME"/>
      </intent-filter>
    </service>
    <!--      since 1.8.0 option    。            JPush         。 -->
    <!--              ,                   -->
    <service
      android:name="cn.jpush.android.service.DaemonService"
      android:enabled="true"
      android:exported="true">
      <intent-filter>
        <action android:name="cn.jpush.android.intent.DaemonService"/>
        <category android:name="com.example.administrator.jiguangpush"/>
      </intent-filter>
    </service>
    <!-- Required SDK           -->
    <receiver
      android:name="cn.jpush.android.service.PushReceiver"
      android:enabled="true"
      android:exported="false">
      <intent-filter android:priority="1000">
        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/>
        <!-- Required       -->
        <category android:name="com.example.administrator.jiguangpush"/>
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.USER_PRESENT"/>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
      </intent-filter>
      <!-- Optional -->
      <intent-filter>
        <action android:name="android.intent.action.PACKAGE_ADDED"/>
        <action android:name="android.intent.action.PACKAGE_REMOVED"/>
        <data android:scheme="package"/>
      </intent-filter>
    </receiver>
    <!-- Required SDK           -->
    <receiver android:name="cn.jpush.android.service.AlarmReceiver"/>
    <receiver
      android:name=".MyReceiver"
      android:enabled="true"
      android:exported="false">
      <intent-filter>
        <action android:name="cn.jpush.android.intent.REGISTRATION"/>
        <!-- Required     SDK intent -->
        <action android:name="cn.jpush.android.intent.UNREGISTRATION"/>
        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED"/>
        <!-- Required     SDK   intent -->
        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED"/>
        <!-- Required     SDK      intent -->
        <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED"/>
        <!-- Required            intent -->
        <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK"/>
        <!-- Optional     Rich Push Javascript      intent -->
        <action android:name="cn.jpush.android.intent.CONNECTION"/>
        <!--          /   since 1.6.3 -->
        <category android:name="com.example.administrator.jiguangpush"/>
      </intent-filter>
    </receiver>
    <!-- Required . Enable it you can get statistics data with channel     appKey    -->
    <meta-data
      android:name="JPUSH_CHANNEL"
      android:value="developer-default"/>
    <meta-data
      android:name="JPUSH_APPKEY"
      android:value="649d75504a154477a4aaeb32"/>
    <!-- </>           AppKey -->
    <activity
      android:name=".NotificationListActivity"
      android:label="@string/title_activity_second">
    </activity>
    <activity
      android:name=".PushTextActivity"
      android:label="@string/title_activity_push_text">
    </activity>
    <activity
      android:name=".SetFreeTimeActivity"
      android:label="@string/title_activity_set_free_time">
    </activity>
    <activity
      android:name=".WebViewActivity"
      android:label="@string/title_activity_web_view">
    </activity>
  </application>
</manifest>
다시 한 번 말씀 드 리 지만 서버 인터페이스 에서 저 는 일반 메시지 로 만 보 냅 니 다.사용자 정의 메시지 와 부 미디어 메 시 지 는 모두 소 용이 없습니다.마지막 으로 지난 서버 에서 일반 메 시 지 를 보 낸 그림 입 니 다.


이상 은 이번 튜 토리 얼 의 모든 내용 입 니 다.필요 한 친구 들 이 따라 테스트 해 보 세 요.결 과 를 우리 에 게 피드백 할 수 있 고 여러분 의 활발 한 투 고 를 환영 합 니 다.

좋은 웹페이지 즐겨찾기