LoginSignup
4
5

More than 5 years have passed since last update.

プッシュ通知をAndroidアプリに組み込む(ニフティモバイルバックエンド)

Last updated at Posted at 2016-03-25

アプリにプッシュ通知を実装したい!

アプリをリリースしてダウンロード数も上昇。しかし、なかなか広告収入が増えないので、プッシュ通知の導入を検討してみました。ニフティの管理ページからタイトルとメッセージを入力して送信して、プッシュ通知を受け取るところまで、まとめてみました。

環境

Android Studio 1.5.1
Android4.4〜5.1で確認しました

Google Developers Consoleへアクセス

プロジェクトを作成する。

プロジェクト.png

プロジェクト名を決める。

プロジェクト 2.png

プロジェクト番号を覚えておく。

Androidのソースコードに貼り付けるのでメモ帳に貼っておきます。

ホーム_-_PushNotification 3.png

APIを有効にする

ホーム_-_PushNotification.png

Google Cloumd Messagingを有効

API_ライブラリ_-_PushNotification_と_MainActivity_java_-_PushNotification_-____Desktop_Android_Dropbox_PushNotification_.png

有効にする

Google_Cloud_Messaging_-_PushNotification.png

認証情報へ進む

Google_Cloud_Messaging_-_PushNotification 2.png

サーバーAPIキーの作成

認証情報ウィザード_-_PushNotification2.png

名前だけ入力

サーバー_API_キーの作成_-_PushNotification_🔊.png

APIキーはNiftyモバイルバックエンドの管理ページに貼りますのでメモ帳へ

認証情報_-_PushNotification.png

niftyモバイルバックエンド

Niftyの会員登録が必要ですので、会員登録を行ってください。

アプリ名を入力して新規作成

ニフティクラウドmobile_backend.png

APIキーを登録

Google Developers Consoleで作成したAPIキーを入力、プッシュ通知の許可を選択して保存します。

ニフティクラウドmobile_backend.png

SDKをダウンロード

プロジェクト作成

Create_New_Project.png

ダウンロードしたSDKを解凍してNCMB.jarをコピー。

NCMB_2_2_1.png

Project形式で表示させて、app/libsにペースト。

MainActivity_java_-_PushNotification_-____Desktop_Android_Dropbox_PushNotification_.png

アプリケーションキーとクライアントキーをメモ帳へ

ニフティクラウドmobile_backend 4.png

※ MainActivity.java
→プロジェクト番号、アプリケーションキー、クライアントキーを貼り付ける

MainActivity.java
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import com.nifty.cloud.mb.core.DoneCallback;
import com.nifty.cloud.mb.core.NCMB;
import com.nifty.cloud.mb.core.NCMBException;
import com.nifty.cloud.mb.core.NCMBInstallation;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        NCMB.initialize(this, "applicationKeyを貼り付ける",
                "clientKeyを貼り付ける");

        final NCMBInstallation installation = NCMBInstallation.getCurrentInstallation();
        Log.d("デバッグ","start");

        installation.getRegistrationIdInBackground("プロジェクト番号", new DoneCallback() {
            @Override
            public void done(NCMBException e) {
                if (e == null) {
                    //成功
                    try {
                        Log.d("デバッグ","成功");
                        //mBaaSに端末情報を保存
                        installation.save();
                    } catch (NCMBException saveError) {
                        //保存失敗
                        Log.d("デバッグ",saveError.getMessage());

                        //error = saveError;
                    }
                } else {
                    //ID取得失敗
                    //error = e;
                }
                //TestCompletion = true;
            }
        });
    }
}
build.gradle

dependencies {
    compile 'com.google.code.gson:gson:2.3.1'
    compile files('libs/NCMB.jar')
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'com.android.support:appcompat-v7:23.1.1'
}

パッケージ名には、自分のパッケージ名を貼り付けて下さい。間違えると動かないですよ。

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="パッケージ名">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <permission android:name="パッケージ.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="パッケージ.permission.C2D_MESSAGE" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- push通知タップ時に遷移するActivity -->
        <meta-data android:name="openPushStartActivity" android:value=".MainActivity"/>
        <!-- 通知エリアに表示されるアイコン -->
        <!-- 通知の複数表示 0:複数表示しない , 1:複数表示する-->
        <meta-data android:name="notificationOverlap" android:value="0"/>
        <!-- ダイアログプッシュの背景画像 -->


        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- GCM受信設定 -->
        <receiver
            android:name="com.google.android.gms.gcm.GcmReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
                <category android:name="パッケージ名"/>
            </intent-filter>
        </receiver>
        <service
            android:name="com.nifty.cloud.mb.core.NCMBGcmListenerService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
            </intent-filter>
        </service>

    </application>

</manifest>

ニフティクラウドmobile_backend 3.png

通知のタイトルとメッセージを入力

ニフティクラウドmobile_backend.png

今すぐ配信、Android端末に配信するにチェックをつけること。1端末に向けて送信されますに更新されたことを確認してプッシュ通知ボタンを押す。

ニフティクラウドmobile_backend 5.png

配信済み

ニフティクラウドmobile_backend.png

成功

Screenshot_2016-03-25-10-23-11_jpeg.png

Androidのプッシュ通知

Googleが提供しているCloud Messaging(GCM)と連携して通知を配信している。

Registration ID

push通知を送るデバイスを認識するための値

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5