GCM을 사용하여 Android로 푸시를 보낼 수 없습니다.

j2417706

내 영어 죄송합니다. 2 일을 보냈지 만 안드로이드에 푸시 메시지를 보낼 수 없습니다. 저는 구글 클라우드 메시지를 사용합니다. 예를 들어 gcm에서 새 프로젝트를 만들고 ID가 있습니다.

여기에 이미지 설명 입력

그런 다음 gcm을 활성화하고 서버 키를 추가했습니다.

여기에 이미지 설명 입력

다음과 같은 코드가 있습니다.

명백한

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.alexy.gcmclient">

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <permission android:name="com.hmkcode.android.gcm.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="com.hmkcode.android.gcm.permission.C2D_MESSAGE" />

    <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>


        <receiver
            android:name=".GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <category android:name="com.hmkcode.android.gcm" />
            </intent-filter>
        </receiver>

        <service
            android:name=".GcmMessageHandler"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
        </service>
  </application>


</manifest>

GcmBroadcastReceiver

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {


    @Override
    public void onReceive(Context context, Intent intent) {

        Log.e("GcmBroadcastReceiver", "GcmBroadcastReceiver");
        // Explicitly specify that GcmMessageHandler will handle the intent.
        ComponentName comp = new ComponentName(context.getPackageName(),
                GcmMessageHandler.class.getName());

        // Start the service, keeping the device awake while it is launching.
        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
    }
}

GcmMessageHandler

public class GcmMessageHandler extends IntentService {

    String mes;
    private Handler handler;
    public GcmMessageHandler() {
        super("GcmMessageHandler");
    }

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();
        handler = new Handler();
        Log.e("GcmMessageHandler", "GcmMessageHandler");
    }
    @Override
    protected void onHandleIntent(Intent intent) {
        Bundle extras = intent.getExtras();

        GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
        // The getMessageType() intent parameter must be the intent you received
        // in your BroadcastReceiver.
        String messageType = gcm.getMessageType(intent);

        Log.e("message", messageType);
    }

본관

public class MainActivity extends Activity implements OnClickListener{

    Button btnRegId, unregister;
    EditText etRegId;
    GoogleCloudMessaging gcm;
    String regid;
    String PROJECT_NUMBER = "308****";

    private BroadcastReceiver mRegistrationBroadcastReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        unregister = (Button) findViewById(R.id.unregister);
        btnRegId = (Button) findViewById(R.id.btnGetRegId);
        etRegId = (EditText) findViewById(R.id.etRegId);

        btnRegId.setOnClickListener(this);


    }

    public void getRegId(){
        new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... params) {
                String msg = "";

                try {

                    InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
                    String token = instanceID.getToken(PROJECT_NUMBER,
                            GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

                    msg = token;
                    //apiKey = msg;
                    GcmPubSub.getInstance(getApplicationContext()).subscribe(token, "/topics/users", null);

                } catch (IOException ex) {
                    msg = "Error :" + ex.getMessage();
                }



                return msg;
            }

            @Override
            protected void onPostExecute(String msg) {
                etRegId.setText(msg + "\n");
                Log.e("key", msg);

            }
        }.execute(null, null, null);
    }

   @Override
    public void onClick(View v) {
        getRegId();
    }

}

나는 서비스를 사용 하고 장치에 푸시 메시지를 보내려고했습니다. 서비스에서는 성공이라고 말합니다. 그러나 안드로이드의 푸시가 오지 않습니다 (로그에 출력이 없습니다)

스리 레디 메논

앱 패키지 이름이 com.example.alexy.gcmclient 이거나 패키지 이름 build.gradle을 대체 해야한다고 가정합니다.

defaultConfig 
        applicationId "com.yourpackge"

<permission
    android:name="com.example.alexy.gcmclient.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />

<uses-permission
    android:name="com.example.alexy.gcmclient.permission.C2D_MESSAGE" />



   <receiver android:name=".GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
              <intent-filter>
                    <action       android:name="com.google.android.c2dm.intent.REGISTRATION" />

                    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                    <category android:name="com.example.alexy.gcmclient" />
                </intent-filter>
            </receiver>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

GoDaddy 서버를 사용하여 laravel 푸시 알림을 iOS 모바일로 보낼 수 없습니다.

분류에서Dev

PHP를 사용하여 iOS에 푸시 알림을 보낼 수 없습니다.

분류에서Dev

Django를 사용하여 GCM에서 POST 요청을 보낼 수 없습니다.

분류에서Dev

GCM 푸시 메시지를 제대로 보낼 수 없습니다.

분류에서Dev

Android 코드를 사용하여 메일을 보낼 수 없습니다.

분류에서Dev

javax를 사용하여 Android에서 Gmail 계정을 사용하여 이메일을 보낼 수 없습니다.

분류에서Dev

Azure를 사용하여 Windows Phone 푸시 알림을 보낼 수 없습니다 .NotificationHubs SDK

분류에서Dev

JSON을 사용하여 POST를 보낼 수 없습니다.

분류에서Dev

내보내기 클래스를 사용하여 assimp로 모델을 내보낼 수 없습니다.

분류에서Dev

Android 앱을 사용하여 HttpPost 요청을 보낼 수 없습니다.

분류에서Dev

Google Script를 사용하여 Gmail로 Excel 첨부 파일을 보낼 수 없습니다.

분류에서Dev

outputStreamWriter ()를 사용하여 앱에서 서블릿으로 문자열을 보낼 수 없습니다.

분류에서Dev

ng-token-auth / devise-token-auth를 사용하여 요청으로 토큰을 보낼 수 없습니다.

분류에서Dev

Ajax를 사용하여 Jquery에서 Spring 컨트롤러로 Multipart 파일을 보낼 수 없습니다.

분류에서Dev

php mail () 함수를 사용하여 메일을 보낼 수 없습니다.

분류에서Dev

Google Apps Script : createEvent ()를 사용하여 이메일을 보낼 수 없습니다.

분류에서Dev

Microsoft.Graph를 사용하여 이메일을 보낼 수 없습니다.

분류에서Dev

PHPmailer를 사용하여 첨부 파일을 보낼 수 없습니다.

분류에서Dev

AJAX를 사용하여 PHP 문자열에 값을 보낼 수 없습니다.

분류에서Dev

SMTP를 사용하여 이메일을 보낼 수 없습니다.

분류에서Dev

ajax를 사용하여 값 속성을 서버에 보낼 수 없습니다.

분류에서Dev

nodemailer를 사용하여 nodejs에서 이메일을 보낼 수 없습니다.

분류에서Dev

mongoose를 사용하여 항목을 배열로 푸시 할 수 없습니다.

분류에서Dev

Outlook 2010을 사용하여 암호화 된 메시지를 다른 사람에게 보낼 수 없습니다.

분류에서Dev

Angular 8을 사용하여 xlsx에서 json 데이터를 사용하여 Excel로 내보낼 수 없습니다.

분류에서Dev

사용자 ID를 사용하여 사용자에게 DM을 보낼 수 없습니다.

분류에서Dev

Twilio를 사용하여 SMS를 보낼 수 없습니다.

분류에서Dev

원하는 URL을 주소 표시 줄로 보낼 수 없습니다.

분류에서Dev

여러 매개 변수가있는 게시 요청을 사용하여 올바른 방식으로 애플리케이션을 보낼 수 없습니다.

Related 관련 기사

  1. 1

    GoDaddy 서버를 사용하여 laravel 푸시 알림을 iOS 모바일로 보낼 수 없습니다.

  2. 2

    PHP를 사용하여 iOS에 푸시 알림을 보낼 수 없습니다.

  3. 3

    Django를 사용하여 GCM에서 POST 요청을 보낼 수 없습니다.

  4. 4

    GCM 푸시 메시지를 제대로 보낼 수 없습니다.

  5. 5

    Android 코드를 사용하여 메일을 보낼 수 없습니다.

  6. 6

    javax를 사용하여 Android에서 Gmail 계정을 사용하여 이메일을 보낼 수 없습니다.

  7. 7

    Azure를 사용하여 Windows Phone 푸시 알림을 보낼 수 없습니다 .NotificationHubs SDK

  8. 8

    JSON을 사용하여 POST를 보낼 수 없습니다.

  9. 9

    내보내기 클래스를 사용하여 assimp로 모델을 내보낼 수 없습니다.

  10. 10

    Android 앱을 사용하여 HttpPost 요청을 보낼 수 없습니다.

  11. 11

    Google Script를 사용하여 Gmail로 Excel 첨부 파일을 보낼 수 없습니다.

  12. 12

    outputStreamWriter ()를 사용하여 앱에서 서블릿으로 문자열을 보낼 수 없습니다.

  13. 13

    ng-token-auth / devise-token-auth를 사용하여 요청으로 토큰을 보낼 수 없습니다.

  14. 14

    Ajax를 사용하여 Jquery에서 Spring 컨트롤러로 Multipart 파일을 보낼 수 없습니다.

  15. 15

    php mail () 함수를 사용하여 메일을 보낼 수 없습니다.

  16. 16

    Google Apps Script : createEvent ()를 사용하여 이메일을 보낼 수 없습니다.

  17. 17

    Microsoft.Graph를 사용하여 이메일을 보낼 수 없습니다.

  18. 18

    PHPmailer를 사용하여 첨부 파일을 보낼 수 없습니다.

  19. 19

    AJAX를 사용하여 PHP 문자열에 값을 보낼 수 없습니다.

  20. 20

    SMTP를 사용하여 이메일을 보낼 수 없습니다.

  21. 21

    ajax를 사용하여 값 속성을 서버에 보낼 수 없습니다.

  22. 22

    nodemailer를 사용하여 nodejs에서 이메일을 보낼 수 없습니다.

  23. 23

    mongoose를 사용하여 항목을 배열로 푸시 할 수 없습니다.

  24. 24

    Outlook 2010을 사용하여 암호화 된 메시지를 다른 사람에게 보낼 수 없습니다.

  25. 25

    Angular 8을 사용하여 xlsx에서 json 데이터를 사용하여 Excel로 내보낼 수 없습니다.

  26. 26

    사용자 ID를 사용하여 사용자에게 DM을 보낼 수 없습니다.

  27. 27

    Twilio를 사용하여 SMS를 보낼 수 없습니다.

  28. 28

    원하는 URL을 주소 표시 줄로 보낼 수 없습니다.

  29. 29

    여러 매개 변수가있는 게시 요청을 사용하여 올바른 방식으로 애플리케이션을 보낼 수 없습니다.

뜨겁다태그

보관