diff --git a/plugin.xml b/plugin.xml index f0d364e..6edcf3d 100644 --- a/plugin.xml +++ b/plugin.xml @@ -14,13 +14,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + diff --git a/src/ios/.DS_Store b/src/ios/.DS_Store new file mode 100644 index 0000000..176357b Binary files /dev/null and b/src/ios/.DS_Store differ diff --git a/src/ios/Plugins/.DS_Store b/src/ios/Plugins/.DS_Store new file mode 100644 index 0000000..3f903a3 Binary files /dev/null and b/src/ios/Plugins/.DS_Store differ diff --git a/src/ios/Plugins/JPushPlugin.h b/src/ios/Plugins/JPushPlugin.h new file mode 100644 index 0000000..ad9b2c6 --- /dev/null +++ b/src/ios/Plugins/JPushPlugin.h @@ -0,0 +1,18 @@ +// +// PushTalkPlugin.h +// PushTalk +// +// Created by zhangqinghe on 13-12-13. +// +// + +#import + +@interface JPushPlugin : CDVPlugin{ + +} + +-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command; +-(void)setTags:(CDVInvokedUrlCommand*)command; +-(void)setAlias:(CDVInvokedUrlCommand*)command; +@end diff --git a/src/ios/Plugins/JPushPlugin.m b/src/ios/Plugins/JPushPlugin.m new file mode 100644 index 0000000..df41e24 --- /dev/null +++ b/src/ios/Plugins/JPushPlugin.m @@ -0,0 +1,77 @@ +// +// PushTalkPlugin.m +// PushTalk +// +// Created by zhangqinghe on 13-12-13. +// +// + +#import "JPushPlugin.h" +#import "APService.h" + +@implementation JPushPlugin + +-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{ + + NSArray *arguments=command.arguments; + if (!arguments||[arguments count]<2) { + [self writeJavascript:[NSString stringWithFormat:@"window.plugins.jPushPlugin.pushCallback('%@')",@""]]; + return ; + } + NSString *tags=[arguments objectAtIndex:0]; + NSString *alias=[arguments objectAtIndex:1]; + NSArray *arrayTags=[tags componentsSeparatedByString:@","]; + // NSArray *tags=[arguments subarrayWithRange:range]; + [APService setTags:[NSSet setWithArray:arrayTags] + alias:alias + callbackSelector:@selector(tagsWithAliasCallback:tags:alias:) + object:self]; + //[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; +} + +-(void)setTags:(CDVInvokedUrlCommand *)command{ + + //CDVPluginResult *pluginResult=nil; + + NSArray *arguments=[command arguments]; + NSString *tags=[arguments objectAtIndex:0]; + + NSArray *array=[tags componentsSeparatedByString:@","]; + [APService setTags:[NSSet setWithArray:array] + callbackSelector:@selector(tagsWithAliasCallback:tags:alias:) + object:self]; + //[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + +} + +-(void)setAlias:(CDVInvokedUrlCommand *)command{ + + CDVPluginResult *pluginResult=nil; + + NSArray *arguments=[command arguments]; + [APService setAlias:[arguments objectAtIndex:0] + callbackSelector:@selector(tagsWithAliasCallback:tags:alias:) + object:self]; + [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; + +} + +-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias{ + + + NSLog(@"recode is %d tags is %@ alias %@",resultCode,tags,alias); + NSDictionary *dict=[NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:resultCode],@"resultCode", + tags==nil?[NSNull null]:[tags allObjects],@"resultTags", + alias==nil?[NSNull null]:alias,@"resultAlias",nil]; + NSError *error; + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict options:0 error:&error]; + NSString *jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding]; + dispatch_async(dispatch_get_main_queue(), ^{ + + [self writeJavascript:[NSString stringWithFormat:@"window.plugins.jPushPlugin.pushCallback('%@')",jsonString]]; + }); +} + + +@end diff --git a/src/ios/PushConfig.plist b/src/ios/PushConfig.plist new file mode 100644 index 0000000..5d8a46d --- /dev/null +++ b/src/ios/PushConfig.plist @@ -0,0 +1,10 @@ + + + + + APP_KEY + 7d431e42dfa6a6d693ac2d04 + CHANNEL + Subscription + + diff --git a/src/ios/lib/.DS_Store b/src/ios/lib/.DS_Store new file mode 100644 index 0000000..eae3208 Binary files /dev/null and b/src/ios/lib/.DS_Store differ diff --git a/src/ios/lib/APService.h b/src/ios/lib/APService.h new file mode 100644 index 0000000..51d36e7 --- /dev/null +++ b/src/ios/lib/APService.h @@ -0,0 +1,39 @@ +// +// APService.h +// APService +// +// Created by JPush on 12-8-15. +// Copyright (c) 2012年 HXHG. All rights reserved. +// Version: 1.6.2 + +#import + +extern NSString * const kAPNetworkDidSetupNotification; // 建立连接 +extern NSString * const kAPNetworkDidCloseNotification; // 关闭连接 +extern NSString * const kAPNetworkDidRegisterNotification; // 注册成功 +extern NSString * const kAPNetworkDidLoginNotification; // 登录成功 +extern NSString * const kAPNetworkDidReceiveMessageNotification; // 收到消息(非APNS) +extern NSString * const kAPServiceErrorNotification; // 错误提示 + + +@interface APService : NSObject + +// 以下四个接口是必须调用的 ++ (void)setupWithOption:(NSDictionary *)launchingOption; // 初始化 ++ (void)registerForRemoteNotificationTypes:(int)types; // 注册APNS类型 ++ (void)registerDeviceToken:(NSData *)deviceToken; // 向服务器上报Device Token ++ (void)handleRemoteNotification:(NSDictionary *)remoteInfo; // 处理收到的APNS消息,向服务器上报收到APNS消息 + +// 下面的接口是可选的 +// 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:http://docs.jpush.cn/pages/viewpage.action?pageId=3309913) ++ (void)setTags:(NSSet *)tags alias:(NSString *)alias DEPRECATED_ATTRIBUTE; ++ (void)setTags:(NSSet *)tags alias:(NSString *)alias callbackSelector:(SEL)cbSelector target:(id)theTarget; ++ (void)setTags:(NSSet *)tags alias:(NSString *)alias callbackSelector:(SEL)cbSelector object:(id)theTarget; ++ (void)setTags:(NSSet *)tags callbackSelector:(SEL)cbSelector object:(id)theTarget; ++ (void)setAlias:(NSString *)alias callbackSelector:(SEL)cbSelector object:(id)theTarget; +// 用于过滤出正确可用的tags,如果总数量超出最大限制则返回最大数量的靠前的可用tags ++ (NSSet*)filterValidTags:(NSSet*)tags; + ++ (NSString *)openUDID; // UDID + +@end diff --git a/src/ios/lib/libPushSDK.a b/src/ios/lib/libPushSDK.a new file mode 100644 index 0000000..51fe738 Binary files /dev/null and b/src/ios/lib/libPushSDK.a differ diff --git a/www/JPushPlugin.js b/www/JPushPlugin.js index 8334285..b45f73f 100644 --- a/www/JPushPlugin.js +++ b/www/JPushPlugin.js @@ -1,82 +1,69 @@ + var JPushPlugin = function(){ - + }; -JPushPlugin.prototype.error_callback = function (msg) { - console.log("Javascript Callback Error: " + msg) +JPushPlugin.prototype.call_native = function ( name, args) { + console.log("JPushPlugin.call_native:"+name); + ret = cordova.exec(null, + null, + 'JPushPlugin', + name, + args); + return ret; } -JPushPlugin.prototype.call_native = function (callback, name, args) { - if(arguments.length == 2) { - args = [] - } - ret = cordova.exec( - callback, - this.error_callback, - 'JPushPlugin', - name, - args); - return ret; +JPushPlugin.prototype.setTagsWithAlias = function (tags,alias) { + + console.log("JPushPlugin:setTagsWithAlias"); + if(tags==null){ + this.setAlias(alias); + return; + } + if(alias==null){ + this.setTags(tags); + return; + } + var arrayTagWithAlias=[tags]; + arrayTagWithAlias.unshift(alias); + this.call_native( "setTagsWithAlias", arrayTagWithAlias); } - -JPushPlugin.prototype.setTags = function (tags, callback) { - this.call_native(callback, "setTags", [tags]) +JPushPlugin.prototype.setTags = function (data) { + + console.log("JPushPlugin:setTags"); + try{ + this.call_native("setTags", [data]); + } + catch(exception){ + alert(exception); + } } - -JPushPlugin.prototype.setAlias = function (alias, callback) { - this.call_native(callback, "setAlias", [alias]) +JPushPlugin.prototype.setAlias = function (data) { + + console.log("JPushPlugin:setAlias"); + try{ + + this.call_native("setAlias", [data]); + } + catch(exception){ + + alert(exception); + } } - JPushPlugin.prototype.pushCallback = function (data) { - var strArr = [data] - var str = strArr[0].message - document.getElementById('tarea').value=str - + try{ + var bToObj=JSON.parse(data); + var code = bToObj.resultCode; + var tags = bToObj.resultTags; + var alias = bToObj.resultAlias; + console.log("JPushPlugin:callBack--code is "+code+" tags is "+tags + " alias is "+alias); + } + catch(exception){ + alert(exception); + } } - -JPushPlugin.prototype.getNotification = function (callback) { - this.call_native(callback, "getNotification"); -} - -JPushPlugin.prototype.setBasicPushNotificationBuilder = function(callback){ - this.call_native(callback,"setBasicPushNotificationBuilder"); -} - -JPushPlugin.prototype.setCustomPushNotificationBuilder = function(callback){ - this.call_native(callback,"setCustomPushNotificationBuilder"); -} - -JPushPlugin.prototype.stopPush = function(callback){ - this.call_native(callback,"stopPush"); -} - -JPushPlugin.prototype.resumePush = function(callback){ - this.call_native(callback,"resumePush"); -} - -JPushPlugin.prototype.clearAllNoticication = function(callback){ - this.call_native(callback,"clearAllNotification"); -} - -JPushPlugin.prototype.setLatestNotificationNum = function(num,callback){ - this.call_native(callback,"setLatestNotificationNum",[num]); -} - -JPushPlugin.prototype.isPushStopped = function(callback){ - this.call_native(callback,"isPushStopped") -} - -JPushPlugin.prototype.init = function(callback){ - this.call_natvie(callback,"init"); -} - -JPushPlugin.prototype.setDebugable = function(mode,callback){ - this.call_native(callback,"setDebugable",[mode]); -} - - - if(!window.plugins) { - window.plugins = {}; + window.plugins = {}; } if(!window.plugins.jPushPlugin){ - window.plugins.jPushPlugin = new JPushPlugin(); -} \ No newline at end of file + window.plugins.jPushPlugin = new JPushPlugin(); +} +module.exports = new JPushPlugin();