parse.com - Android Parse Notification cannot receive notification if push form our server -
i'm using parse notification in project.
i have received notification if force parse console.but when force our server cannot notification. btw, code server supply ios , ios device got notification.
the notification force our server parse , parse send android device. kindly advise , give thanks kind help.
my manifest :
<uses-permission android:name="android.permission.internet" /> <uses-permission android:name="android.permission.access_network_state" /> <uses-permission android:name="android.permission.wake_lock" /> <uses-permission android:name="android.permission.receive_boot_completed" /> <uses-permission android:name="android.permission.vibrate" /> <uses-permission android:name="android.permission.get_accounts" /> <uses-permission android:name="com.google.android.c2dm.permission.receive" /> <permission android:name="com.zukami.apps.dev.blynk.permission.c2d_message" android:protectionlevel="signature" /> <uses-permission android:name="com.zukami.apps.dev.blynk.permission.c2d_message" /> <!-- force notification --> <service android:name="com.parse.pushservice" /> <receiver android:name="com.parse.parsebroadcastreceiver" > <intent-filter> <action android:name="android.intent.action.boot_completed" /> <action android:name="android.intent.action.user_present" /> </intent-filter> </receiver> <receiver android:name="com.parse.gcmbroadcastreceiver" android:permission="com.google.android.c2dm.permission.send" > <intent-filter> <action android:name="com.google.android.c2dm.intent.receive" /> <action android:name="com.google.android.c2dm.intent.registration" /> <category android:name="com.zukami.apps.dev.blynk" /> </intent-filter> </receiver> <receiver android:name="com.zukami.apps.dev.blynk.util.blynkparsebroadcastreceiver" android:exported="false" > <intent-filter> <action android:name="com.parse.push.intent.receive" /> <action android:name="com.parse.push.intent.delete" /> <action android:name="com.parse.push.intent.open" /> </intent-filter> </receiver> <!-- end of force notification -->
my application class:
@override public void oncreate() { super.oncreate(); parse.initialize(this, "your_app_id", "your_client_key"); pushservice.setdefaultpushcallback(this,pushactivity.class); parsepush.subscribeinbackground("testchannel", new savecallback() { @override public void done(com.parse.parseexception e) { if (e == null) { log.e(tag, "successfully subscribed broadcast channel."); } else { log.e(tag, "failed subscribe push", e); } } }); }
my activity class :
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.display_promo_activity); spinner = (progressbar) findviewbyid(r.id.progressbar1); fragment = new fragment(); fragmentmanager fragmentmanager = getsupportfragmentmanager(); fragmenttransaction transaction = fragmentmanager.begintransaction(); transaction.replace(r.id.frame_container, fragment, promo_popup); transaction.commit(); // track app opens. parseanalytics.trackappopened(getintent()); bundle extras = getintent().getextras(); if (extras != null) { mdata = extras.getstring("com.parse.data"); log.e(tag, "data original = " + mdata); if (mdata != null) { mdata = mdata.replace("\\", "").trim(); mdata = mdata.replace("\"{", "{").trim(); mdata = mdata.replace("}\"", "}").trim(); log.e(tag, "after replace = " + mdata); seek { jsonobject jobject = new jsonobject(mdata); jsonobject alertobj = jobject.getjsonobject("alert"); jsonobject dataobj = alertobj.getjsonobject("data"); action = dataobj.getstring("action"); jsonobject innerdataobj = dataobj.getjsonobject("data"); id = innerdataobj.getstring("id"); } grab (jsonexception e) { log.e(tag, e.getmessage()); } } } }
my broadcast class :
@override public void onpushopen(context context, intent intent) { log.e("push", "clicked"); intent = new intent(context, pushactivity.class); i.putextras(intent.getextras()); i.setflags(intent.flag_activity_new_task); context.startactivity(i); }
this code server create force notification :
var jss = new javascriptserializer(); string endpoint = "https://api.parse.com/1/push"; string applicationid = "app_id"; string restapikey = "rest_api_key"; pushnotificationaction info = new pushnotificationaction(); data.action = "viewaction"; data.alert = "alert action android"; data.data = new pushnotificationactiondata() { id = actionid }; var client = new restclient(endpoint: endpoint, method: httpverb.post); client.headers = new list<string>(); client.headers.add(string.format("x-parse-application-id: {0}", applicationid)); client.headers.add(string.format("x-parse-rest-api-key: {0}", restapikey)); pushactionnotification force = new pushactionnotification(); push.channels = new list<string>(); push.channels.add(""); push.data = new pushnotificationactionitem() { info = jss.serialize(data), content_available = 1 }; string jsondata = jss.serialize(push).replace("content_available", "content-available"); client.postdata = jsondata; client.contenttype = "application/json"; var json = client.makerequest(); response.status = 1; homecoming response; public class pushnotificationaction { public string action { get; set; } public pushnotificationactiondata info { get; set; } public string alertmsg { get; set; } public string alert { get; set; } } public class pushnotificationactiondata { public string id { get; set; } } public class pushnotificationactionitem { public string info { get; set; } public int content_available { get; set; } } public class pushactionnotification { public list<string> channels { get; set; } //public string type { get; set; } public pushnotificationactionitem info { get; set; } }
i found solutions!!
the problem in json data. same json info force ios cannot force android, decide split force notification android , ios. android template json next below :
{ "data": { "action": "viewaction", "data": { "id": "1432f1ea-33c4-4528-a695-7412a7a7499a" }, "alertmsg": null }, "title": "alert action android", "alert": "alert action android", "push_hash": "d265b3500c1089dc0c7c9ace251cfebb" }
here's short description :
data --> set json payload value of json key title --> value android notification description alert --> value android notification title.i post reply maybe useful in future, cheers..
android parse.com
No comments:
Post a Comment