JPush PhoneGap Plugin
来源:互联网 发布:经济学推荐书籍 知乎 编辑:程序博客网 时间:2024/06/06 00:03
创建项目
cordova create 文件夹名字 包名 应用名字
cordova create Myproj com.myproj.jpush MyTestProj
添加平台
cd Myproj :不进行这一步可能会出现[RangeError:Maximum call stack size exceeded]cordova platform add android
Android使用PhoneGap/Cordova CLI自动安装
使用 phonegap 或者 cordova cli 添加插件(建议在git客户端下使用,在windows 的cmd界面下 该命令提示git command line tool 不可用):
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git
添加device插件,部分API需要根据平台进行调用,需添加org.apache.cordova.device插件
cordova plugin add org.apache.cordova.device
修改[your project]/plugins/android.json生成脚本的JPUSH_APPKEY字段
"xml": "<meta-data android:name=\"JPUSH_APPKEY\" android:value=\"your appkey in JPush Portal\" />",
执行 cordova build android 使修改的
JPUSH_APPKEY
写入AndroidManifest.xml文件
温馨提示:如果使用eclipse来生成安装包,步骤2与步骤3可省略。直接在AndroidManifest.xml文件中修改JPUSH_APPKEY即可
IOS使用PhoneGap/Cordova CLI自动安装
使用PhoneGap/Cordova CLI命令安装
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.gitcordova build ios
修改Resources/PushConfig.plist文件
在APP_KEY和CHANNLE字段 分别添加您的appkey和channle
添加监听系统事件,相应地调用 JPush SDK 提供的 API 来实现功能
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; // Required#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1 if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { //可以添加自定义categories [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil]; } else { //categories 必须为nil [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];#else //categories 必须为nil [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];#endif // Required [APService setupWithOption:launchOptions]; return YES;}- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Required [APService registerDeviceToken:deviceToken];}- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // Required [APService handleRemoteNotification:userInfo];}
Android 手工安装
- 复制src/android/*.java 到cn/jpush/phonega/目录下(即:cn.jpush.phonegap的包下)
- 复制src/android/armeabi/libjpush.so 到lib/armeabi/
- 复制src/android/jpush-sdk-release1.5.0.jar 到lib/
- 复制src/android/test_notification_layout.xml到res/layout/
- 复制src/android/jpush_notification_icon.png 到res/drawable/
修改 AndroidManifest.xml 在 manifest 节点下添加以下权限
<!-- Required 一些系统要求的权限,如访问网络等--><uses-permission android:name="$PACKAGE_NAME.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.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.SYSTEM_ALERT_WINDOW"/><permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE" android:protectionLevel="signature"/>
修改AndroidManifest.xml 在 manifest/application 节点下添加SDK相关组件声明
<activity android:name="cn.jpush.android.ui.PushActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden"> <intent-filter> <action android:name="cn.jpush.android.ui.PushActivity"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="$PACKAGE_NAME"/> </intent-filter></activity><!-- Required SDK核心功能--><service android:name="cn.jpush.android.service.DownloadService" android:enabled="true" android:exported="false"></service><!-- Required SDK 核心功能--><service android:name="cn.jpush.android.service.PushService" android:enabled="true" android:exported="false"> <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><!-- Required SDK核心功能--><receiverandroid:name="cn.jpush.android.service.PushReceiver"android:enabled="true"> <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/> <!--Required 显示通知栏 --> <category android:name="$PACKAGE_NAME"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT"/> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> <!-- Optional --> <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><!-- User defined. For test only 用户自定义的广播接收器 --><receiverandroid:name="cn.jpush.phonegap.MyReceiver"android:enabled="true"> <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/> <!-- Required 显示通知栏 --> <category android:name="$PACKAGE_NAME"/> </intent-filter> <intent-filter> <action android:name="cn.jpush.android.intent.REGISTRATION"/> <!-- Required 用户注册SDK的intent --> <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 --> <category android:name="$PACKAGE_NAME"/> </intent-filter></receiver><!-- Required SDK核心功能--><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="developer-default"/><meta-data android:name="JPUSH_APPKEY" android:value="299d0fee887820e7d90a68b2"/>
IOS手工安装
- 添加src/ios/Plugins/到project中
- 添加src/ios/lib/到project中
- 设置 Search Paths 下的 User Header Search Paths 和 Library Search Paths
比如SDK文件夹(默认为lib)与工程文件在同一级目录下,则都设置为"$(SRCROOT)/[文件夹名称]"即可。
确认一下的框架是存在的(Target -> Build Phases -> Link Binary With Libraries)
CFNetwork.frameworkCoreFoundation.frameworkCoreTelephony.frameworkSystemConfiguration.frameworkCoreGraphics.frameworkFoundation.frameworkUIKit.framework
在你的工程中创建一个新的Property List文件
并将其命名为PushConfig.plist,填入Portal为你的应用提供的APP_KEY等参数
调用代码,监听系统事件,相应地调用 JPush SDK 提供的 API 来实现功能
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; // Required [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; // Required [APService setupWithOption:launchOptions]; return YES;}- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Required [APService registerDeviceToken:deviceToken];}- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // Required [APService handleRemoteNotification:userInfo];}
修改phonegap config.xml文件用来包含Plugin/内的插件
<feature name="JPushPlugin"> <param name="ios-package" value="JPushPlugin" /> <param name="onload" value="true" /></feature>
复制www/PushNotification.js到工程的www目录下面
在需要使用插件处加入
<script type="text/javascript" src="JPushPlugin.js"></script>
示例
完整的示例可以点击网页右侧的"Download Zip"下载,下载完成后在文件的"src/ios/example"文件夹内找到并拷贝以下文件
src/ios/example/index.html to www/index.htmlsrc/ios/example/css/* to www/csssrc/ios/example/js/* to www/js
关于'phonegap build'云服务
该项目基于cordova实现,目前无法使用'phonegap build'云服务进行打包,建议使用本地环境进行打包
常见错误
androd
eclipse中phonegap工程import之后出现:`Type CallbackContext cannot be resolved to a type`解决方案:eclipse中右键单击工程名,Build Path->Config Build Path->Projects->选中 工程名称-CordovaLib->点击 add
- JPush PhoneGap Plugin
- h5 消息推送 jpush-phonegap-plugin 插件的使用
- ionic2-JPush ionic2极光推送的封装基于 jpush-phonegap-plugin
- android phonegap plugin
- Andorid PhoneGap HelloWorld plugin
- phonegap plugin.xml 示例
- PhoneGap发短信的Plugin
- phonegap plugin的创建方法
- Jpush
- jpush
- jpush
- JPush
- JPush
- jpush
- PhoneGap NFC plugin支持BlackBerry, Android
- android phonegap插件开发方法 plugin
- HTML5-PhoneGap Plugin的创建步骤
- android phonegap插件开发方法 plugin
- java学习中的疑难杂症(六)---多线程
- Hadoop 单表关联 多表关联
- poj 1143 number game
- GeoGeo多线程
- GeoGeo并行计算
- JPush PhoneGap Plugin
- 设计模式 - 适配器模式 C++
- Reorder List
- 新手如何学习C#、ASP.NET
- LRU Cache
- GeoGeo大数据集
- Insertion Sort List
- Sort List
- LeetCode: Remove Duplicates from Sorted Array