Skip to content

Commit f9575d0

Browse files
committed
GCM Notifications implementation
GCM Notifications implementation (we now need changes on Domoticz side)!
1 parent e9734e9 commit f9575d0

12 files changed

+166
-12
lines changed

app/build.gradle

+6-1
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ dependencies {
7070
compile 'com.google.android.gms:play-services-analytics:8.4.0'
7171
compile 'com.google.android.gms:play-services-wearable:8.4.0'
7272
compile 'com.google.android.gms:play-services-maps:8.4.0'
73+
compile 'com.google.android.gms:play-services-gcm:8.4.0'
7374
compile 'com.google.android.gms:play-services-location:8.4.0'
7475
compile('com.github.afollestad.material-dialogs:core:0.8.5.0@aar') {
7576
transitive = true
@@ -90,6 +91,10 @@ dependencies {
9091
compile 'com.squareup.picasso:picasso:2.5.2'
9192
compile 'com.github.fenjuly:SpinnerLoader:fd5b8ab578'
9293
compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
94+
compile 'eu.inloop:easygcm:1.6.1@aar'
9395

9496
paidWearApp project(path: ':wear', configuration: 'paidRelease')
95-
}
97+
}
98+
99+
100+
apply plugin: 'com.google.gms.google-services'

app/google-services.json

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
{
2+
"project_info": {
3+
"project_id": "domoticz-1127",
4+
"project_number": "661310329417",
5+
"name": "Domoticz"
6+
},
7+
"client": [
8+
{
9+
"client_info": {
10+
"mobilesdk_app_id": "1:661310329417:android:b74c4323e1f98430",
11+
"client_id": "android:nl.hnogames.domoticz",
12+
"client_type": 1,
13+
"android_client_info": {
14+
"package_name": "nl.hnogames.domoticz"
15+
}
16+
},
17+
"oauth_client": [],
18+
"api_key": [],
19+
"services": {
20+
"analytics_service": {
21+
"status": 2,
22+
"analytics_property": {
23+
"tracking_id": "UA-71812306-1"
24+
}
25+
},
26+
"cloud_messaging_service": {
27+
"status": 2,
28+
"apns_config": []
29+
},
30+
"appinvite_service": {
31+
"status": 1,
32+
"other_platform_oauth_client": []
33+
},
34+
"google_signin_service": {
35+
"status": 1
36+
},
37+
"ads_service": {
38+
"status": 1
39+
}
40+
}
41+
},
42+
{
43+
"client_info": {
44+
"mobilesdk_app_id": "1:661310329417:android:b74c4323e1f98430",
45+
"client_id": "android:nl.hnogames.domoticz.premium",
46+
"client_type": 1,
47+
"android_client_info": {
48+
"package_name": "nl.hnogames.domoticz.premium"
49+
}
50+
},
51+
"oauth_client": [],
52+
"api_key": [],
53+
"services": {
54+
"analytics_service": {
55+
"status": 2,
56+
"analytics_property": {
57+
"tracking_id": "UA-71812306-1"
58+
}
59+
},
60+
"cloud_messaging_service": {
61+
"status": 2,
62+
"apns_config": []
63+
},
64+
"appinvite_service": {
65+
"status": 1,
66+
"other_platform_oauth_client": []
67+
},
68+
"google_signin_service": {
69+
"status": 1
70+
},
71+
"ads_service": {
72+
"status": 1
73+
}
74+
}
75+
}
76+
],
77+
"client_info": [],
78+
"ARTIFACT_VERSION": "1"
79+
}

app/src/main/java/nl/hnogames/domoticz/MainActivity.java

+7-4
Original file line numberDiff line numberDiff line change
@@ -243,10 +243,13 @@ private void addFragment() {
243243
}
244244

245245
private void saveScreenToAnaliticz(String screen) {
246-
AppController application = (AppController) getApplication();
247-
Tracker mTracker = application.getDefaultTracker();
248-
mTracker.setScreenName(screen);
249-
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
246+
try {
247+
AppController application = (AppController) getApplication();
248+
Tracker mTracker = application.getDefaultTracker();
249+
mTracker.setScreenName(screen);
250+
mTracker.send(new HitBuilders.ScreenViewBuilder().build());
251+
}catch(Exception ex)
252+
{}
250253
}
251254

252255
private void updateDrawerItems() {

app/src/main/java/nl/hnogames/domoticz/Preference/Preference.java

+17
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222

2323
package nl.hnogames.domoticz.Preference;
2424

25+
import android.content.ClipData;
26+
import android.content.ClipboardManager;
27+
import android.content.Context;
2528
import android.content.Intent;
2629
import android.content.pm.PackageInfo;
2730
import android.content.pm.PackageManager;
@@ -86,6 +89,20 @@ public boolean onPreferenceClick(android.preference.Preference preference) {
8689
}
8790
});
8891

92+
android.preference.Preference NotificatioID = findPreference("notification_registration_id");
93+
NotificatioID.setOnPreferenceClickListener(new android.preference.Preference.OnPreferenceClickListener() {
94+
@Override
95+
public boolean onPreferenceClick(android.preference.Preference preference) {
96+
String id = mSharedPrefs.getNotificationRegistrationID();
97+
Toast.makeText(getActivity(), getActivity().getString(R.string.notification_settings_copied) + ": " + id, Toast.LENGTH_SHORT).show();
98+
99+
ClipboardManager clipboard = (ClipboardManager)getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
100+
ClipData clip = ClipData.newPlainText("id", id);
101+
clipboard.setPrimaryClip(clip);
102+
return true;
103+
}
104+
});
105+
89106
android.preference.Preference GeoSettings = findPreference("geo_settings");
90107
GeoSettings.setOnPreferenceClickListener(new android.preference.Preference.OnPreferenceClickListener() {
91108
@Override

app/src/main/java/nl/hnogames/domoticz/Utils/NotificationUtil.java

+4
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import android.app.PendingIntent;
2727
import android.content.Context;
2828
import android.content.Intent;
29+
import android.graphics.BitmapFactory;
2930
import android.support.v4.app.NotificationCompat;
3031

3132
import nl.hnogames.domoticz.MainActivity;
@@ -37,15 +38,18 @@ public static void sendSimpleNotification(String title, String text, Context con
3738
NotificationCompat.Builder builder =
3839
new NotificationCompat.Builder(context)
3940
.setSmallIcon(R.drawable.ic_launcher)
41+
.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher))
4042
.setContentTitle(title)
4143
.setContentText(text);
4244
int NOTIFICATION_ID = 12345;
4345

4446
Intent targetIntent = new Intent(context, MainActivity.class);
4547
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, targetIntent, PendingIntent.FLAG_UPDATE_CURRENT);
4648
builder.setContentIntent(contentIntent);
49+
4750
NotificationManager nManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
4851
nManager.notify(NOTIFICATION_ID, builder.build());
52+
4953
}
5054

5155
}

app/src/main/java/nl/hnogames/domoticz/Utils/SharedPrefUtil.java

+9
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ public class SharedPrefUtil {
6767
public static final String PREF_CUSTOM_WEAR = "enableWearItems";
6868
public static final String PREF_CUSTOM_WEAR_ITEMS = "wearItems";
6969
public static final String PREF_ALWAYS_ON = "alwayson";
70+
public static final String PREF_NOTIFICATION_ID = "notification_id";
7071

7172
public static final String PREF_UPDATE_VERSION = "updateversion";
7273
public static final String PREF_EXTRA_DATA = "extradata";
@@ -179,6 +180,14 @@ public void setWelcomeWizardSuccess(boolean success) {
179180
editor.putBoolean(PREF_WELCOME_SUCCESS, success).apply();
180181
}
181182

183+
public String getNotificationRegistrationID() {
184+
return prefs.getString(PREF_NOTIFICATION_ID, "");
185+
}
186+
187+
public void setNotificationRegistrationID(String id) {
188+
editor.putString(PREF_NOTIFICATION_ID, id).apply();
189+
}
190+
182191
public void removeWizard() {
183192
// 1 if start up screen is 0 (wizard) change to dashboard
184193
if (getStartupScreenIndex() == 0) setStartupScreenIndex(1);

app/src/main/java/nl/hnogames/domoticz/app/AppController.java

+21-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import android.app.Application;
2626
import android.content.Context;
27+
import android.os.Bundle;
2728
import android.support.multidex.MultiDex;
2829
import android.text.TextUtils;
2930
import android.util.Log;
@@ -45,10 +46,14 @@
4546
import javax.net.ssl.X509TrustManager;
4647

4748
import de.duenndns.ssl.MemorizingTrustManager;
49+
import eu.inloop.easygcm.EasyGcm;
50+
import eu.inloop.easygcm.GcmListener;
4851
import nl.hnogames.domoticz.R;
52+
import nl.hnogames.domoticz.Utils.NotificationUtil;
53+
import nl.hnogames.domoticz.Utils.SharedPrefUtil;
4954

5055

51-
public class AppController extends Application {
56+
public class AppController extends Application implements GcmListener {
5257

5358
public static final String TAG = AppController.class.getSimpleName();
5459
private static AppController mInstance;
@@ -66,6 +71,7 @@ public void onCreate() {
6671

6772
//for debugging & receiving crash reports
6873
Mint.initAndStartSession(this, "a61b1e35");
74+
EasyGcm.init(this);
6975

7076
mInstance = this;
7177
}
@@ -134,4 +140,18 @@ synchronized public Tracker getDefaultTracker() {
134140
}
135141
return mTracker;
136142
}
143+
144+
@Override
145+
public void onMessage(String s, Bundle bundle) {
146+
if(bundle.containsKey("message"))
147+
{
148+
String message = bundle.getString("message");
149+
NotificationUtil.sendSimpleNotification("Domoticz", message, this);
150+
}
151+
}
152+
153+
@Override
154+
public void sendRegistrationIdToBackend(String s) {
155+
new SharedPrefUtil(this).setNotificationRegistrationID(s);
156+
}
137157
}

app/src/main/res/values/strings_settings.xml

+8-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
<string name="category_wear">Android Wear</string>
1212
<string name="category_server">Server</string>
1313
<string name="category_geofencing">Geofencing</string>
14-
<string name="category_info">Information</string>
14+
<string name="category_info">Information</string>>
15+
<string name="category_notification">Notifications</string>
1516
<string name="category_debug">Debugging</string>
1617
<string name="category_export">Export/Import Settings</string>
1718

@@ -51,6 +52,12 @@
5152
<string name="import_settings">Import settings</string>
5253

5354

55+
<!-- Notification settings -->
56+
<string name="notification_settings">Notification Settings ID</string>
57+
<string name="notification_settings_copy">Copy your registration id to clipboard</string>
58+
<string name="notification_settings_copied">Copied to clipboard</string>
59+
60+
5461
<!-- Information category -->
5562
<string name="info_version">Version</string>
5663
<string name="info_domoticz_version">Domoticz version</string>

app/src/main/res/xml/preferences.xml

+7
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@
7777
android:title="@string/import_settings" />
7878
</PreferenceCategory>
7979

80+
<PreferenceCategory android:title="@string/category_notification">
81+
<Preference
82+
android:key="notification_registration_id"
83+
android:title="@string/notification_settings"
84+
android:summary="@string/notification_settings_copy" />
85+
</PreferenceCategory>
86+
8087
<PreferenceCategory android:title="@string/category_info">
8188
<Preference
8289
android:key="version"

build.gradle

+2-4
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@ buildscript {
88
}
99
//noinspection GroovyAssignabilityCheck
1010
dependencies {
11-
classpath 'com.android.tools.build:gradle:1.5.0'
12-
13-
// NOTE: Do not place your application dependencies here; they belong
14-
// in the individual module build.gradle files
11+
classpath 'com.android.tools.build:gradle:2.0.0-alpha3'
12+
classpath 'com.google.gms:google-services:2.0.0-alpha3'
1513
}
1614
}
1715

gradle-wrapper.properties

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
distributionBase=GRADLE_USER_HOME
2+
distributionPath=wrapper/dists
3+
zipStoreBase=GRADLE_USER_HOME
4+
zipStorePath=wrapper/dists
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip

gradle/wrapper/gradle-wrapper.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip

0 commit comments

Comments
 (0)