Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
react-native-fcm
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Jira
Jira
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
ym
react-native-fcm
Commits
45c310a6
Commit
45c310a6
authored
May 07, 2018
by
Libin Lu
Committed by
GitHub
May 07, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #932 from evollu/remove-decode
remove decode for sound and image
parents
85e0a4ba
be82034d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
61 additions
and
65 deletions
+61
-65
android/src/main/java/com/evollu/react/fcm/SendNotificationTask.java
.../main/java/com/evollu/react/fcm/SendNotificationTask.java
+61
-65
No files found.
android/src/main/java/com/evollu/react/fcm/SendNotificationTask.java
View file @
45c310a6
...
@@ -36,69 +36,69 @@ import static com.facebook.react.common.ReactConstants.TAG;
...
@@ -36,69 +36,69 @@ import static com.facebook.react.common.ReactConstants.TAG;
public
class
SendNotificationTask
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
public
class
SendNotificationTask
extends
AsyncTask
<
Void
,
Void
,
Void
>
{
private
static
final
long
DEFAULT_VIBRATION
=
300L
;
private
static
final
long
DEFAULT_VIBRATION
=
300L
;
private
Context
mContext
;
private
Context
mContext
;
private
Bundle
bundle
;
private
Bundle
bundle
;
private
SharedPreferences
sharedPreferences
;
private
SharedPreferences
sharedPreferences
;
private
Boolean
mIsForeground
;
private
Boolean
mIsForeground
;
SendNotificationTask
(
Context
context
,
SharedPreferences
sharedPreferences
,
Boolean
mIsForeground
,
Bundle
bundle
){
SendNotificationTask
(
Context
context
,
SharedPreferences
sharedPreferences
,
Boolean
mIsForeground
,
Bundle
bundle
){
this
.
mContext
=
context
;
this
.
mContext
=
context
;
this
.
bundle
=
bundle
;
this
.
bundle
=
bundle
;
this
.
sharedPreferences
=
sharedPreferences
;
this
.
sharedPreferences
=
sharedPreferences
;
this
.
mIsForeground
=
mIsForeground
;
this
.
mIsForeground
=
mIsForeground
;
}
}
protected
Void
doInBackground
(
Void
...
params
)
{
protected
Void
doInBackground
(
Void
...
params
)
{
try
{
try
{
String
intentClassName
=
getMainActivityClassName
();
String
intentClassName
=
getMainActivityClassName
();
if
(
intentClassName
==
null
)
{
if
(
intentClassName
==
null
)
{
return
null
;
return
null
;
}
}
String
body
=
bundle
.
getString
(
"body"
);
String
body
=
bundle
.
getString
(
"body"
);
if
(
body
==
null
)
{
if
(
body
==
null
)
{
return
null
;
return
null
;
}
}
body
=
URLDecoder
.
decode
(
body
,
"UTF-8"
);
body
=
URLDecoder
.
decode
(
body
,
"UTF-8"
);
Resources
res
=
mContext
.
getResources
();
Resources
res
=
mContext
.
getResources
();
String
packageName
=
mContext
.
getPackageName
();
String
packageName
=
mContext
.
getPackageName
();
String
title
=
bundle
.
getString
(
"title"
);
String
title
=
bundle
.
getString
(
"title"
);
if
(
title
==
null
)
{
if
(
title
==
null
)
{
ApplicationInfo
appInfo
=
mContext
.
getApplicationInfo
();
ApplicationInfo
appInfo
=
mContext
.
getApplicationInfo
();
title
=
mContext
.
getPackageManager
().
getApplicationLabel
(
appInfo
).
toString
();
title
=
mContext
.
getPackageManager
().
getApplicationLabel
(
appInfo
).
toString
();
}
}
title
=
URLDecoder
.
decode
(
title
,
"UTF-8"
);
title
=
URLDecoder
.
decode
(
title
,
"UTF-8"
);
String
ticker
=
bundle
.
getString
(
"ticker"
);
String
ticker
=
bundle
.
getString
(
"ticker"
);
if
(
ticker
!=
null
)
ticker
=
URLDecoder
.
decode
(
ticker
,
"UTF-8"
);
if
(
ticker
!=
null
)
ticker
=
URLDecoder
.
decode
(
ticker
,
"UTF-8"
);
String
subText
=
bundle
.
getString
(
"sub_text"
);
String
subText
=
bundle
.
getString
(
"sub_text"
);
if
(
subText
!=
null
)
subText
=
URLDecoder
.
decode
(
subText
,
"UTF-8"
);
if
(
subText
!=
null
)
subText
=
URLDecoder
.
decode
(
subText
,
"UTF-8"
);
NotificationCompat
.
Builder
notification
=
new
NotificationCompat
.
Builder
(
mContext
)
NotificationCompat
.
Builder
notification
=
new
NotificationCompat
.
Builder
(
mContext
)
.
setContentTitle
(
title
)
.
setContentTitle
(
title
)
.
setContentText
(
body
)
.
setContentText
(
body
)
.
setTicker
(
ticker
)
.
setTicker
(
ticker
)
.
setVisibility
(
NotificationCompat
.
VISIBILITY_PRIVATE
)
.
setVisibility
(
NotificationCompat
.
VISIBILITY_PRIVATE
)
.
setAutoCancel
(
bundle
.
getBoolean
(
"auto_cancel"
,
true
))
.
setAutoCancel
(
bundle
.
getBoolean
(
"auto_cancel"
,
true
))
.
setNumber
((
int
)
bundle
.
getDouble
(
"number"
))
.
setNumber
((
int
)
bundle
.
getDouble
(
"number"
))
.
setSubText
(
subText
)
.
setSubText
(
subText
)
.
setVibrate
(
new
long
[]{
0
,
DEFAULT_VIBRATION
})
.
setVibrate
(
new
long
[]{
0
,
DEFAULT_VIBRATION
})
.
setExtras
(
bundle
.
getBundle
(
"data"
));
.
setExtras
(
bundle
.
getBundle
(
"data"
));
if
(
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
){
if
(
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
){
String
group
=
bundle
.
getString
(
"group"
);
String
group
=
bundle
.
getString
(
"group"
);
if
(
group
!=
null
)
group
=
URLDecoder
.
decode
(
group
,
"UTF-8"
);
if
(
group
!=
null
)
group
=
URLDecoder
.
decode
(
group
,
"UTF-8"
);
notification
.
setGroup
(
group
);
notification
.
setGroup
(
group
);
}
}
if
(
bundle
.
containsKey
(
"ongoing"
)
&&
bundle
.
getBoolean
(
"ongoing"
))
{
if
(
bundle
.
containsKey
(
"ongoing"
)
&&
bundle
.
getBoolean
(
"ongoing"
))
{
notification
.
setOngoing
(
bundle
.
getBoolean
(
"ongoing"
));
notification
.
setOngoing
(
bundle
.
getBoolean
(
"ongoing"
));
}
}
//priority
//priority
String
priority
=
bundle
.
getString
(
"priority"
,
""
);
String
priority
=
bundle
.
getString
(
"priority"
,
""
);
switch
(
priority
)
{
switch
(
priority
)
{
...
@@ -114,7 +114,7 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
...
@@ -114,7 +114,7 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
default
:
default
:
notification
.
setPriority
(
NotificationCompat
.
PRIORITY_DEFAULT
);
notification
.
setPriority
(
NotificationCompat
.
PRIORITY_DEFAULT
);
}
}
//icon
//icon
String
smallIcon
=
bundle
.
getString
(
"icon"
,
"ic_launcher"
);
String
smallIcon
=
bundle
.
getString
(
"icon"
,
"ic_launcher"
);
int
smallIconResId
=
res
.
getIdentifier
(
smallIcon
,
"mipmap"
,
packageName
);
int
smallIconResId
=
res
.
getIdentifier
(
smallIcon
,
"mipmap"
,
packageName
);
...
@@ -124,45 +124,43 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
...
@@ -124,45 +124,43 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
if
(
smallIconResId
!=
0
){
if
(
smallIconResId
!=
0
){
notification
.
setSmallIcon
(
smallIconResId
);
notification
.
setSmallIcon
(
smallIconResId
);
}
}
//large icon
//large icon
String
largeIcon
=
bundle
.
getString
(
"large_icon"
);
String
largeIcon
=
bundle
.
getString
(
"large_icon"
);
if
(
largeIcon
!=
null
&&
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
android
.
os
.
Build
.
VERSION_CODES
.
LOLLIPOP
){
if
(
largeIcon
!=
null
&&
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
android
.
os
.
Build
.
VERSION_CODES
.
LOLLIPOP
){
largeIcon
=
URLDecoder
.
decode
(
largeIcon
,
"UTF-8"
);
if
(
largeIcon
.
startsWith
(
"http://"
)
||
largeIcon
.
startsWith
(
"https://"
))
{
if
(
largeIcon
.
startsWith
(
"http://"
)
||
largeIcon
.
startsWith
(
"https://"
))
{
Bitmap
bitmap
=
getBitmapFromURL
(
largeIcon
);
Bitmap
bitmap
=
getBitmapFromURL
(
largeIcon
);
notification
.
setLargeIcon
(
bitmap
);
notification
.
setLargeIcon
(
bitmap
);
}
else
{
}
else
{
int
largeIconResId
=
res
.
getIdentifier
(
largeIcon
,
"mipmap"
,
packageName
);
int
largeIconResId
=
res
.
getIdentifier
(
largeIcon
,
"mipmap"
,
packageName
);
Bitmap
largeIconBitmap
=
BitmapFactory
.
decodeResource
(
res
,
largeIconResId
);
Bitmap
largeIconBitmap
=
BitmapFactory
.
decodeResource
(
res
,
largeIconResId
);
if
(
largeIconResId
!=
0
)
{
if
(
largeIconResId
!=
0
)
{
notification
.
setLargeIcon
(
largeIconBitmap
);
notification
.
setLargeIcon
(
largeIconBitmap
);
}
}
}
}
}
}
//big text
//big text
String
bigText
=
bundle
.
getString
(
"big_text"
);
String
bigText
=
bundle
.
getString
(
"big_text"
);
if
(
bigText
!=
null
){
if
(
bigText
!=
null
){
bigText
=
URLDecoder
.
decode
(
bigText
,
"UTF-8"
);
bigText
=
URLDecoder
.
decode
(
bigText
,
"UTF-8"
);
notification
.
setStyle
(
new
NotificationCompat
.
BigTextStyle
().
bigText
(
bigText
));
notification
.
setStyle
(
new
NotificationCompat
.
BigTextStyle
().
bigText
(
bigText
));
}
}
//picture
//picture
String
picture
=
bundle
.
getString
(
"picture"
);
String
picture
=
bundle
.
getString
(
"picture"
);
if
(
picture
!=
null
){
if
(
picture
!=
null
){
picture
=
URLDecoder
.
decode
(
picture
,
"UTF-8"
);
NotificationCompat
.
BigPictureStyle
bigPicture
=
new
NotificationCompat
.
BigPictureStyle
();
NotificationCompat
.
BigPictureStyle
bigPicture
=
new
NotificationCompat
.
BigPictureStyle
();
if
(
picture
.
startsWith
(
"http://"
)
||
picture
.
startsWith
(
"https://"
))
{
if
(
picture
.
startsWith
(
"http://"
)
||
picture
.
startsWith
(
"https://"
))
{
Bitmap
bitmap
=
getBitmapFromURL
(
picture
);
Bitmap
bitmap
=
getBitmapFromURL
(
picture
);
bigPicture
.
bigPicture
(
bitmap
);
bigPicture
.
bigPicture
(
bitmap
);
}
else
{
}
else
{
int
pictureResId
=
res
.
getIdentifier
(
picture
,
"mipmap"
,
packageName
);
int
pictureResId
=
res
.
getIdentifier
(
picture
,
"mipmap"
,
packageName
);
Bitmap
pictureResIdBitmap
=
BitmapFactory
.
decodeResource
(
res
,
pictureResId
);
Bitmap
pictureResIdBitmap
=
BitmapFactory
.
decodeResource
(
res
,
pictureResId
);
if
(
pictureResId
!=
0
)
{
if
(
pictureResId
!=
0
)
{
bigPicture
.
bigPicture
(
pictureResIdBitmap
);
bigPicture
.
bigPicture
(
pictureResIdBitmap
);
}
}
...
@@ -171,11 +169,10 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
...
@@ -171,11 +169,10 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
// that cause to display duplicated body in subtext when picture has specified
// that cause to display duplicated body in subtext when picture has specified
notification
.
setStyle
(
bigPicture
);
notification
.
setStyle
(
bigPicture
);
}
}
//sound
//sound
String
soundName
=
bundle
.
getString
(
"sound"
);
String
soundName
=
bundle
.
getString
(
"sound"
);
if
(
soundName
!=
null
)
{
if
(
soundName
!=
null
)
{
soundName
=
URLDecoder
.
decode
(
soundName
,
"UTF-8"
);
if
(
soundName
.
equalsIgnoreCase
(
"default"
))
{
if
(
soundName
.
equalsIgnoreCase
(
"default"
))
{
notification
.
setSound
(
RingtoneManager
.
getDefaultUri
(
RingtoneManager
.
TYPE_NOTIFICATION
));
notification
.
setSound
(
RingtoneManager
.
getDefaultUri
(
RingtoneManager
.
TYPE_NOTIFICATION
));
}
else
{
}
else
{
...
@@ -187,18 +184,17 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
...
@@ -187,18 +184,17 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
notification
.
setSound
(
Uri
.
parse
(
"android.resource://"
+
packageName
+
"/"
+
soundResourceId
));
notification
.
setSound
(
Uri
.
parse
(
"android.resource://"
+
packageName
+
"/"
+
soundResourceId
));
}
}
}
}
//color
//color
if
(
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
if
(
android
.
os
.
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
LOLLIPOP
)
{
notification
.
setCategory
(
NotificationCompat
.
CATEGORY_CALL
);
notification
.
setCategory
(
NotificationCompat
.
CATEGORY_CALL
);
String
color
=
bundle
.
getString
(
"color"
);
String
color
=
bundle
.
getString
(
"color"
);
if
(
color
!=
null
)
{
if
(
color
!=
null
)
{
color
=
URLDecoder
.
decode
(
color
,
"UTF-8"
);
notification
.
setColor
(
Color
.
parseColor
(
color
));
notification
.
setColor
(
Color
.
parseColor
(
color
));
}
}
}
}
//vibrate
//vibrate
if
(
bundle
.
containsKey
(
"vibrate"
)){
if
(
bundle
.
containsKey
(
"vibrate"
)){
long
vibrate
=
Math
.
round
(
bundle
.
getDouble
(
"vibrate"
,
DEFAULT_VIBRATION
));
long
vibrate
=
Math
.
round
(
bundle
.
getDouble
(
"vibrate"
,
DEFAULT_VIBRATION
));
...
@@ -208,40 +204,40 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
...
@@ -208,40 +204,40 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
notification
.
setVibrate
(
null
);
notification
.
setVibrate
(
null
);
}
}
}
}
//lights
//lights
if
(
bundle
.
getBoolean
(
"lights"
))
{
if
(
bundle
.
getBoolean
(
"lights"
))
{
notification
.
setDefaults
(
NotificationCompat
.
DEFAULT_LIGHTS
);
notification
.
setDefaults
(
NotificationCompat
.
DEFAULT_LIGHTS
);
}
}
if
(
bundle
.
containsKey
(
"fire_date"
))
{
if
(
bundle
.
containsKey
(
"fire_date"
))
{
Log
.
d
(
TAG
,
"broadcast intent if it is a scheduled notification"
);
Log
.
d
(
TAG
,
"broadcast intent if it is a scheduled notification"
);
Intent
i
=
new
Intent
(
"com.evollu.react.fcm.ReceiveLocalNotification"
);
Intent
i
=
new
Intent
(
"com.evollu.react.fcm.ReceiveLocalNotification"
);
i
.
putExtras
(
bundle
);
i
.
putExtras
(
bundle
);
LocalBroadcastManager
.
getInstance
(
mContext
).
sendBroadcast
(
i
);
LocalBroadcastManager
.
getInstance
(
mContext
).
sendBroadcast
(
i
);
}
}
if
(!
mIsForeground
||
bundle
.
getBoolean
(
"show_in_foreground"
)){
if
(!
mIsForeground
||
bundle
.
getBoolean
(
"show_in_foreground"
)){
Intent
intent
=
new
Intent
();
Intent
intent
=
new
Intent
();
intent
.
setClassName
(
mContext
,
intentClassName
);
intent
.
setClassName
(
mContext
,
intentClassName
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_SINGLE_TOP
);
intent
.
addFlags
(
Intent
.
FLAG_ACTIVITY_SINGLE_TOP
);
intent
.
putExtras
(
bundle
);
intent
.
putExtras
(
bundle
);
String
clickAction
=
bundle
.
getString
(
"click_action"
);
String
clickAction
=
bundle
.
getString
(
"click_action"
);
if
(
clickAction
!=
null
)
clickAction
=
URLDecoder
.
decode
(
clickAction
,
"UTF-8"
);
if
(
clickAction
!=
null
)
clickAction
=
URLDecoder
.
decode
(
clickAction
,
"UTF-8"
);
intent
.
setAction
(
clickAction
);
intent
.
setAction
(
clickAction
);
int
notificationID
=
bundle
.
containsKey
(
"id"
)
?
bundle
.
getString
(
"id"
,
""
).
hashCode
()
:
(
int
)
System
.
currentTimeMillis
();
int
notificationID
=
bundle
.
containsKey
(
"id"
)
?
bundle
.
getString
(
"id"
,
""
).
hashCode
()
:
(
int
)
System
.
currentTimeMillis
();
PendingIntent
pendingIntent
=
PendingIntent
.
getActivity
(
mContext
,
notificationID
,
intent
,
PendingIntent
pendingIntent
=
PendingIntent
.
getActivity
(
mContext
,
notificationID
,
intent
,
PendingIntent
.
FLAG_UPDATE_CURRENT
);
PendingIntent
.
FLAG_UPDATE_CURRENT
);
notification
.
setContentIntent
(
pendingIntent
);
notification
.
setContentIntent
(
pendingIntent
);
if
(
bundle
.
containsKey
(
"android_actions"
))
{
if
(
bundle
.
containsKey
(
"android_actions"
))
{
String
androidActions
=
bundle
.
getString
(
"android_actions"
);
String
androidActions
=
bundle
.
getString
(
"android_actions"
);
androidActions
=
URLDecoder
.
decode
(
androidActions
,
"UTF-8"
);
androidActions
=
URLDecoder
.
decode
(
androidActions
,
"UTF-8"
);
WritableArray
actions
=
ReactNativeJson
.
convertJsonToArray
(
new
JSONArray
(
androidActions
));
WritableArray
actions
=
ReactNativeJson
.
convertJsonToArray
(
new
JSONArray
(
androidActions
));
for
(
int
a
=
0
;
a
<
actions
.
size
();
a
++)
{
for
(
int
a
=
0
;
a
<
actions
.
size
();
a
++)
{
ReadableMap
action
=
actions
.
getMap
(
a
);
ReadableMap
action
=
actions
.
getMap
(
a
);
...
@@ -259,9 +255,9 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
...
@@ -259,9 +255,9 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
notification
.
addAction
(
0
,
actionTitle
,
pendingActionIntent
);
notification
.
addAction
(
0
,
actionTitle
,
pendingActionIntent
);
}
}
}
}
Notification
info
=
notification
.
build
();
Notification
info
=
notification
.
build
();
NotificationManagerCompat
.
from
(
mContext
).
notify
(
notificationID
,
info
);
NotificationManagerCompat
.
from
(
mContext
).
notify
(
notificationID
,
info
);
}
}
...
@@ -285,7 +281,7 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
...
@@ -285,7 +281,7 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
}
}
return
null
;
return
null
;
}
}
private
Bitmap
getBitmapFromURL
(
String
strURL
)
{
private
Bitmap
getBitmapFromURL
(
String
strURL
)
{
try
{
try
{
URL
url
=
new
URL
(
strURL
);
URL
url
=
new
URL
(
strURL
);
...
@@ -299,7 +295,7 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
...
@@ -299,7 +295,7 @@ public class SendNotificationTask extends AsyncTask<Void, Void, Void> {
return
null
;
return
null
;
}
}
}
}
protected
String
getMainActivityClassName
()
{
protected
String
getMainActivityClassName
()
{
String
packageName
=
mContext
.
getPackageName
();
String
packageName
=
mContext
.
getPackageName
();
Intent
launchIntent
=
mContext
.
getPackageManager
().
getLaunchIntentForPackage
(
packageName
);
Intent
launchIntent
=
mContext
.
getPackageManager
().
getLaunchIntentForPackage
(
packageName
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment