Titanium 使用刘明星的Jpush module做android端的消息推送
2017-03-27 17:39
429 查看
明星的jpush module android 版本用于用Titanium开发Android消息推送功能,使用步骤如下:
1.从github上下载titanium_module_jpush_android;2.从项目中找到titanium_module_jpush_android/android/dist/com.mamashai.jpush-android-3.0.8.zip,解压并将得到modules文件;
3.在需要消息推送的项目下新建modules目录用于存放所需的modules,因module为Android版本,所以modules下新建android文件夹;
4.将解压缩得到的modules目录下android下的com.mamashai.jpush拷贝到新建的android文件夹下;
5.在xxx.js你所需要添加消息推送的js文件下)下键入如下代码:
//订阅推送: var push = require('com.mamashai.jpush'); push.setAlias(Ti.App.Properties.getString("userid", ""), function(e){ Ti.API.log("register to jpush code: " + e.code + ", token: " + e.device_token); }); //接收推送: var act = Titanium.Android.currentActivity; var _intent = act.intent; var str = _intent.getStringExtra("cn.jpush.android.EXTRA"); if (str && str.length > 0){ //push_call(_intent.getStringExtra("cn.jpush.android.ALERT"), JSON.parse(str)); //自己写的显示消息框方法 show_alert("提示", e.intent.getStringExtra("cn.jpush.android.EXTRA")); } //用户点击了推送 var bc = Ti.Android.createBroadcastReceiver({ onReceived : function(e) { Ti.API.info("cn.jpush.android.PUSH_ID: " + e.intent.getStringExtra("cn.jpush.android.PUSH_ID")); Ti.API.info("app: " + e.intent.getStringExtra("app")); Ti.API.info("cn.jpush.android.ALERT: " + e.intent.getStringExtra("cn.jpush.android.ALERT")); Ti.API.info("cn.jpush.android.EXTRA: " + e.intent.getStringExtra("cn.jpush.android.EXTRA")); Ti.API.info("cn.jpush.android.NOTIFICATION_ID: "+ e.intent.getStringExtra("cn.jpush.android.NOTIFICATION_ID")); Ti.API.info("cn.jpush.android.NOTIFICATION_CONTENT_TITLE: " + e.intent.getStringExtra("cn.jpush.android.NOTIFICATION_CONTENT_TITLE")); Ti.API.info("cn.jpush.android.MSG_ID: " + e.intent.getStringExtra("cn.jpush.android.MSG_ID")); Ti.API.info("cn.jpush.android.TITLE: " + e.intent.getStringExtra("cn.jpush.android.TITLE")); Ti.API.info("cn.jpush.android.MESSAGE: " + e.intent.getStringExtra("cn.jpush.android.MESSAGE")); Ti.API.info("cn.jpush.android.CONTENT_TYPE: " + e.intent.getStringExtra("cn.jpush.android.CONTENT_TYPE")); var str = e.intent.getStringExtra("cn.jpush.android.EXTRA"); if (str && str.length > 0){ //自己写的显示消息框方法 show_alert("提示", e.intent.getStringExtra("cn.jpush.android.EXTRA")); } } }); Ti.Android.registerBroadcastReceiver(bc, ['mamashai_jpush']); //一定要释放掉,否则容易出问题 win.addEventListener("close", function(){ Ti.Android.unregisterBroadcastReceiver(bc); }); //收到推送,还未打开 var bc2 = Ti.Android.createBroadcastReceiver({ onReceived : function(e) { var json = JSON.parse(e.intent.getStringExtra("cn.jpush.android.EXTRA")); //to do } }); Ti.Android.registerBroadcastReceiver(bc2, ['mamashai_jpush_received']); //一定要释放掉,否则容易出问题 win.addEventListener("close", function(){ Ti.Android.unregisterBroadcastReceiver(bc2); });
6.在tiapp.xml文件下键入如下代码:
<modules> <module platform="android" version="3.0.8">com.mamashai.jpush</module> </modules>
7.注册并登录Jpush后,在控制台创建应用,获得AppKey;
8.在tiapp.xml文件下的
<android> </android>
内键入如下代码:
<manifest package="(你的包名,例如com.uubpay.xxx)" > <permission android:name="(你的包名,例如com.uubpay.xxx).permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> <!-- Required 一些系统要求的权限,如访问网络等--> <uses-permission android:name="(你的包名,例如com.uubpay.xxx).permission.JPUSH_MESSAGE" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <!-- Optional for location --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <application> <service android:enabled="true" android:exported="false" android:name="cn.jpush.android.service.PushService"> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER"/> <action android:name="cn.jpush.android.intent.REPORT"/> <action android:name="cn.jpush.android.intent.PushService"/> <action android:name="cn.jpush.android.intent.PUSH_TIME"/> </intent-filter> </service> <receiver android:enabled="true" android:name="cn.jpush.android.service.PushReceiver"> <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/> <category android:name="(你的包名,例如com.uubpay.xxx)"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT"/> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED"/> <action android:name="android.intent.action.PACKAGE_REMOVED"/> <data android:scheme="package"/> </intent-filter> </receiver> <receiver android:name="com.mamashai.jpush.MamashaiReceiver"> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTRATION"/> <action android:name="cn.jpush.android.intent.UNREGISTRATION"/> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED"/> <!--Required 用户接收SDK消息的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED"/> <!--Required 用户接收SDK通知栏信息的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED"/> <!--Required 用户打开自定义通知栏的intent--> <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK"/> <!--Optional 用户接受Rich Push Javascript 回调函数的intent--> <action android:name="cn.jpush.android.intent.CONNECTION"/> <!-- 接收网络变化 连接/断开 since 1.6.3 --> <category android:name="(你的包名,例如com.uubpay.xxx)"/> </intent-filter> </receiver> <activity android:configChanges="orientation|keyboardHidden" android:name="cn.jpush.android.ui.PushActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar"> <intent-filter> <action android:name="cn.jpush.android.ui.PushActivity"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="(你的包名,例如com.uubpay.xxx)"/> </intent-filter> </activity> <service android:enabled="true" android:exported="false" android:name="cn.jpush.android.service.DownloadService"/> <receiver android:name="cn.jpush.android.service.AlarmReceiver"/> <!-- Required . Enable it you can get statistics data with channel --> <meta-data android:name="JPUSH_CHANNEL" android:value="c_1908"/> <meta-data android:name="JPUSH_APPKEY" android:value="(你的AppKey)" /> </application> </manifest>
将如上代码中的包名和AppKey替换成你自己的(AppKey从Jpush的应用管理中得到)
9.运行项目;
10.在Jpush中推送消息,测试能否实现消息推送(确保测试时客户端联网),另外,如果通知栏下拉菜单图标不显示请换个手机品牌试一下,coolpad发现就不显示图标。
相关文章推荐
- 使用第三方推送平台JPUSH推送消息到android手机
- php使用JPush极光推送ios android通知消息
- 跨平台移动开发 Android使用JPush推送消息
- 给你的Android APP推送消息可以使用GCM
- iOS及Android消息推送方案安装使用入门 分享
- 使用Androidpn实现Android消息推送
- Android 使用MQTT协议实现消息推送
- 学习使用Android极光消息推送
- Android 使用GCM(Google Cloud Messaging)推送消息
- 消息推送之百度云推送Android集成与使用方法
- 使用GCM服务(Google Cloud Messaging)实现Android消息推送
- Android 推送消息的实现,使用百度云推送
- Android 状态栏消息推送 BroadcastReceiver的使用
- 使用Androiddp推送消息的一些问题
- Android移动开发—解决JPush服务器推送消息方案
- 如何使用androidpn实现android手机消息推送(简单的源码分析)
- 使用Androidpn实现Android消息推送
- 使用GCM服务(Google Cloud Messaging)实现Android消息推送
- 使用GCM服务(Google Cloud Messaging)实现Android消息推送
- 使用Androidpn实现Android消息推送