mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2025-02-20 20:22:50 +08:00
Merge branch 'dev'
This commit is contained in:
commit
423304c5dc
@ -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,6 +1,6 @@
|
||||
{
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "3.0.1",
|
||||
"version": "3.0.2",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
|
@ -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,11 +43,25 @@
|
||||
}
|
||||
}
|
||||
[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{
|
||||
if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
|
||||
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
|
||||
@ -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;
|
||||
|
@ -39,6 +39,10 @@
|
||||
|
||||
@implementation JPushPlugin
|
||||
|
||||
-(void)startJPushSDK:(CDVInvokedUrlCommand*)command{
|
||||
[(AppDelegate*)[UIApplication sharedApplication].delegate startJPushSDK];
|
||||
}
|
||||
|
||||
#pragma mark- 外部接口
|
||||
-(void)stopPush:(CDVInvokedUrlCommand*)command{
|
||||
[[UIApplication sharedApplication]unregisterForRemoteNotifications];
|
||||
@ -55,18 +59,13 @@
|
||||
|
||||
-(void)initial:(CDVInvokedUrlCommand*)command{
|
||||
//do nithng,because Cordova plugin use lazy load mode.
|
||||
SharedJPushPlugin = self;
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(networkDidReceiveMessage:)
|
||||
name:kJPFNetworkDidReceiveMessageNotification
|
||||
object:nil];
|
||||
}
|
||||
|
||||
#ifdef __CORDOVA_4_0_0
|
||||
|
||||
- (void)pluginInitialize {
|
||||
NSLog(@"### pluginInitialize ");
|
||||
SharedJPushPlugin = self;
|
||||
[self initPlugin];
|
||||
}
|
||||
|
||||
#else
|
||||
@ -75,12 +74,22 @@
|
||||
NSLog(@"### initWithWebView ");
|
||||
if (self=[super initWithWebView:theWebView]) {
|
||||
}
|
||||
SharedJPushPlugin = self;
|
||||
[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)
|
||||
|
Loading…
Reference in New Issue
Block a user