mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2026-04-19 00:03:45 +08:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 423304c5dc | |||
| 5d7181a659 | |||
| eb0595e5c0 | |||
| c2f1bc86bf | |||
| 30fbc6094f | |||
| d39dea2441 | |||
| abfcd3c93a | |||
| 399d159757 | |||
| b96e36d6aa | |||
| 78310e5c69 | |||
| fbad235605 | |||
| fa8700f05d | |||
| cf7a481921 |
@@ -2,7 +2,7 @@
|
||||
|
||||
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
||||
[]()
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin)
|
||||
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# iOS API
|
||||
|
||||
- [延迟注册和启动推送通知服务](#延迟注册和启动推送通知服务)
|
||||
- [开始与停止推送服务](#开始与停止推送服务)
|
||||
- [获取 RegistrationID](#获取-registrationid)
|
||||
- [别名与标签](#别名与标签)
|
||||
@@ -19,6 +20,32 @@
|
||||
- [获取用户推送设置](#获取用户推送设置)
|
||||
- [监听事件统一说明](#监听事件统一说明)
|
||||
|
||||
|
||||
|
||||
## 延迟注册和启动推送通知服务
|
||||
|
||||
本插件默认在 App 启动完成之后,立即「注册苹果通知服务」+「启动 JPush SDK」,其中:
|
||||
|
||||
- 「注册苹果通知服务」会弹出提示窗口向用户请求权限。
|
||||
- 「启动 JPush SDK」是使用 JPush 各项 API 的必要条件。
|
||||
|
||||
开发者可以根据自己的需求,延迟注册和启动,需做以下操作:
|
||||
|
||||
1. 查找并配置 `PushConfig.plist` 文件中的 `Delay` 字段为 `YES`,表明会延迟使用,此时插件不再自动注册、启动通知。
|
||||
2. 在需要注册并启动通知的地方调用 API - startJPushSDK。
|
||||
|
||||
### API - startJPushSDK
|
||||
|
||||
注册苹果通知服务,并启动 JPush SDK。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```
|
||||
window.plugins.jPushPlugin.startJPushSDK()
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 开始与停止推送服务
|
||||
|
||||
### API - init
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "2.2.8",
|
||||
"version": "3.0.2",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
|
||||
+8
-7
@@ -2,7 +2,7 @@
|
||||
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
id="jpush-phonegap-plugin"
|
||||
version="2.2.7">
|
||||
version="3.0.1">
|
||||
|
||||
<name>JPush Plugin</name>
|
||||
<description>JPush for cordova plugin</description>
|
||||
@@ -176,12 +176,13 @@
|
||||
<meta-data android:name="JPUSH_APPKEY" android:value="$API_KEY" />
|
||||
</config-file>
|
||||
|
||||
<source-file src="src/android/libs/jpush-android-2.2.0.jar" target-dir="libs" />
|
||||
<source-file src="src/android/libs/armeabi/libjpush220.so" target-dir="libs/armeabi" />
|
||||
<source-file src="src/android/libs/armeabi-v7a/libjpush220.so" target-dir="libs/armeabi-v7a" />
|
||||
<source-file src="src/android/libs/arm64-v8a/libjpush220.so" target-dir="libs/arm64-v8a" />
|
||||
<source-file src="src/android/libs/x86/libjpush220.so" target-dir="libs/x86" />
|
||||
<source-file src="src/android/libs/x86_64/libjpush220.so" target-dir="libs/x86_64" />
|
||||
<source-file src="src/android/libs/jpush-android_v3.0.0.jar" target-dir="libs" />
|
||||
<source-file src="src/android/libs/jcore-android_v1.0.0.jar" target-dir="libs" />
|
||||
<source-file src="src/android/libs/armeabi/libjcore100.so" target-dir="libs/armeabi" />
|
||||
<source-file src="src/android/libs/armeabi-v7a/libjcore100.so" target-dir="libs/armeabi-v7a" />
|
||||
<source-file src="src/android/libs/arm64-v8a/libjcore100.so" target-dir="libs/arm64-v8a" />
|
||||
<source-file src="src/android/libs/x86/libjcore100.so" target-dir="libs/x86" />
|
||||
<source-file src="src/android/libs/x86_64/libjcore100.so" target-dir="libs/x86_64" />
|
||||
|
||||
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jpush/phonegap" />
|
||||
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jpush/phonegap" />
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -12,4 +12,5 @@
|
||||
|
||||
@interface AppDelegate (JPush) <JPUSHRegisterDelegate>
|
||||
-(void)registerForRemoteNotification;
|
||||
-(void)startJPushSDK;
|
||||
@end
|
||||
|
||||
@@ -28,6 +28,8 @@
|
||||
return [self init_plus];
|
||||
}
|
||||
|
||||
NSDictionary *_launchOptions;
|
||||
|
||||
-(void)applicationDidLaunch:(NSNotification *)notification{
|
||||
if (notification) {
|
||||
if (notification.userInfo) {
|
||||
@@ -41,9 +43,23 @@
|
||||
}
|
||||
}
|
||||
[JPUSHService setDebugMode];
|
||||
[self registerForRemoteNotification];
|
||||
[JPushPlugin setupJPushSDK:notification.userInfo];
|
||||
|
||||
NSString *plistPath = [[NSBundle mainBundle] pathForResource:JPushConfig_FileName ofType:@"plist"];
|
||||
NSMutableDictionary *plistData = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
|
||||
NSNumber *delay = [plistData valueForKey:JPushConfig_Delay];
|
||||
|
||||
_launchOptions = notification.userInfo;
|
||||
|
||||
if (![delay boolValue]) {
|
||||
[self startJPushSDK];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
-(void)startJPushSDK{
|
||||
[self registerForRemoteNotification];
|
||||
[JPushPlugin setupJPushSDK:_launchOptions];
|
||||
}
|
||||
|
||||
-(void)registerForRemoteNotification{
|
||||
@@ -100,11 +116,18 @@
|
||||
|
||||
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler{
|
||||
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:notification.request.content.userInfo];
|
||||
|
||||
if ([SharedJPushPlugin respondsToSelector:@selector(jpushFireDocumentEvent:jsString:)]) {
|
||||
|
||||
}
|
||||
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
|
||||
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
|
||||
}
|
||||
|
||||
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
|
||||
if ([SharedJPushPlugin respondsToSelector:@selector(jpushFireDocumentEvent:jsString:)]) {
|
||||
|
||||
}
|
||||
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:response.notification.request.content.userInfo];
|
||||
@try {
|
||||
[userInfo setValue:[response valueForKey:@"userText"] forKey:@"userText"];
|
||||
|
||||
@@ -15,11 +15,12 @@
|
||||
|
||||
#define WEAK_SELF(weakSelf) __weak __typeof(&*self)weakSelf = self;
|
||||
|
||||
static NSString *const JPushConfig_FileName = @"PushConfig";
|
||||
static NSString *const JPushConfig_Appkey = @"Appkey";
|
||||
static NSString *const JPushConfig_Channel = @"Channel";
|
||||
static NSString *const JPushConfig_IsProduction = @"IsProduction";
|
||||
static NSString *const JPushConfig_IsIDFA = @"IsIDFA";
|
||||
static NSString *const JPushConfig_FileName = @"PushConfig";
|
||||
static NSString *const JPushConfig_Delay = @"Delay";
|
||||
|
||||
static NSString *const JPushDocumentEvent_ReceiveNotification = @"receiveNotification";
|
||||
static NSString *const JPushDocumentEvent_OpenNotification = @"openNotification";
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
}
|
||||
|
||||
//注册通知服务并启动 SDK
|
||||
-(void)startJPushSDK:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
//以下为js中可调用接口
|
||||
//设置标签、别名
|
||||
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command;
|
||||
@@ -78,7 +81,7 @@
|
||||
|
||||
@end
|
||||
|
||||
static JPushPlugin *SharedJPushPlugin;
|
||||
JPushPlugin *SharedJPushPlugin;
|
||||
|
||||
@interface NSDictionary (JPush)
|
||||
-(NSString*)toJsonString;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
//
|
||||
// PushTalkPlugin.m
|
||||
// PushTalk
|
||||
@@ -38,6 +39,10 @@
|
||||
|
||||
@implementation JPushPlugin
|
||||
|
||||
-(void)startJPushSDK:(CDVInvokedUrlCommand*)command{
|
||||
[(AppDelegate*)[UIApplication sharedApplication].delegate startJPushSDK];
|
||||
}
|
||||
|
||||
#pragma mark- 外部接口
|
||||
-(void)stopPush:(CDVInvokedUrlCommand*)command{
|
||||
[[UIApplication sharedApplication]unregisterForRemoteNotifications];
|
||||
@@ -60,7 +65,7 @@
|
||||
|
||||
- (void)pluginInitialize {
|
||||
NSLog(@"### pluginInitialize ");
|
||||
SharedJPushPlugin = self;
|
||||
[self initPlugin];
|
||||
}
|
||||
|
||||
#else
|
||||
@@ -69,11 +74,22 @@
|
||||
NSLog(@"### initWithWebView ");
|
||||
if (self=[super initWithWebView:theWebView]) {
|
||||
}
|
||||
[self initPlugin];
|
||||
return self;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
-(void)initPlugin{
|
||||
if (!SharedJPushPlugin) {
|
||||
SharedJPushPlugin = self;
|
||||
}
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(networkDidReceiveMessage:)
|
||||
name:kJPFNetworkDidReceiveMessageNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
-(void)jpushFireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString{
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
[self.commandDelegate evalJs:[NSString stringWithFormat:@"cordova.fireDocumentEvent('jpush.%@',%@)", eventName, jsString]];
|
||||
|
||||
@@ -3,12 +3,14 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Appkey</key>
|
||||
<string></string>
|
||||
<string>1c29cb5814072b5b1f8ef829</string>
|
||||
<key>Channel</key>
|
||||
<string>Subscription</string>
|
||||
<key>IsProduction</key>
|
||||
<false/>
|
||||
<key>IsIDFA</key>
|
||||
<false/>
|
||||
<key>Delay</key>
|
||||
<false/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -49,6 +49,11 @@ JPushPlugin.prototype.isPushStopped = function (callback) {
|
||||
}
|
||||
|
||||
// iOS methods
|
||||
|
||||
JPushPlugin.prototype.startJPushSDK = function () {
|
||||
this.call_native('startJPushSDK', [] , null)
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
|
||||
if (tags == null) {
|
||||
this.setAlias(alias)
|
||||
|
||||
Reference in New Issue
Block a user