Created
October 21, 2013 07:05
-
-
Save phausler/7079724 to your computer and use it in GitHub Desktop.
example bridge callbacks
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Foo.java | |
*/ | |
package com.apportable.example; | |
... | |
public class Foo { | |
public static void initialize(Activity activity, String appId) { | |
/* do something here in java */ | |
} | |
public native void myCallback(String value); | |
public Foo(Activity activity) { | |
} | |
public void invokeCallback(String value) { | |
myCallback(value); | |
} | |
} | |
/* | |
Foo.h | |
*/ | |
#import <BridgeKit/JavaObject.h> | |
@class AndroidActivity; | |
@interface Foo : JavaObject | |
+ (void)initialize:(AndroidActivity *)activity appIdentifier:(NSString *)appId; | |
- (id)initWithActivity:(AndroidActivity *)activity; | |
- (id)init; | |
- (void)invokeCallback:(NSString *)value; | |
- (void)invokeCallback:(NSString *)value handler:(void (^)(NSString *))handler; | |
@end | |
/* | |
Foo.m | |
*/ | |
#import "Foo.h" | |
@implementation Foo { | |
void (^_handler)(NSString *); | |
} | |
+ (void)initializeJava | |
{ | |
[super initializeJava]; | |
[Foo registerStaticMethod:@"initialize" selector:@selector(initialize:appIdentifier:) arguments:[AndroidActivity className], [NSString className], nil]; | |
[Foo registerConstructorWithSelector:@selector(initWithActivity:) arguments:[AndroidActivity className], nil]; | |
[Foo registerInstanceMethod:@"invokeCallback" selector:@selector(invokeCallback:) arguments:[NSString className], nil]; | |
[Foo registerCallback:@"myCallback" selector:@selector(myCallback:) arguments:[NSString className], nil]; | |
} | |
- (id)init | |
{ | |
return [self initWithActivity:[AndroidActivity currentActivity]]; | |
} | |
- (void)dealloc | |
{ | |
[_handler release]; | |
[super dealloc]; | |
} | |
- (void)invokeCallback:(NSString *)value handler:(void (^)(NSString *))handler | |
{ | |
if (_handler != handler) | |
{ | |
[_handler release]; | |
_handler = Block_copy(handler); | |
} | |
[self invokeCallback:value]; | |
} | |
- (void)myCallback:(NSString *)value | |
{ | |
if (_handler != NULL) { | |
_handler(value); | |
} | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment