"Сеанс неожиданно аннулирован".
Из этого видео я узнал, что проблема заключается в правах и возможностях:
Я не знаю, какие подсказки сборки потребуются для включения функции NFC ПОЛНОСТЬЮ.
Я не нашел файла .entitlements в исходном коде, сгенерированном сервером сборки Codenameone.
Использованные мной подсказки по сборке:
ios_add_libs=;CoreNFC.framework
ios.entitlements.nfc.readersession.formats=NDEF,TAG
ios.infoPlist.NFCReaderUsageDescription=Тег NFC для чтения сообщений NDEF в приложение
ios.objC=true
ios.plistInject=
Код: Выделить всё
NFCReaderUsageDescription NFC tag to read NDEF messages into the application UIRequiredDeviceCapabilitiesarmv7nfcМои файлы в objC:
- com_myapp_mobi_NfcInterfaceImpl.m
Код: Выделить всё
#import "com_myapp_mobi_NFCCallback.h"
#import "CodenameOne_GLViewController.h"
@implementation com_myapp_mobi_NfcInterfaceImpl
-(void)unbindNFCListener{
}
-(void)bindNFCListener:(NSString*)param param1:(NSString*)param1{
NSString *dataToSendBack = @"Hello from iOS";
if (![NFCNDEFReaderSession readingAvailable]) {
dataToSendBack = @"NFC is Available";
// return;
}
// Create and begin an NFCNDEFReaderSession
// Set invalidateAfterFirstRead:NO to read multiple tags or continue the session
self.session = [[NFCNDEFReaderSession alloc ] initWithDelegate:self
queue:dispatch_queue_create(NULL, DISPATCH_QUEUE_CONCURRENT)
invalidateAfterFirstRead:YES];
[self.session beginSession];
}
-(BOOL)isSupported{
return YES;
}
// Called when the session detects NDEF messages
- (void)readerSession:(NFCNDEFReaderSession *)session didDetectNDEFs:(NSArray *)messages {
for (NFCNDEFMessage *message in messages) {
for (NFCNDEFPayload *record in message.records) {
NSString *dataToSendBack = @"New Record Found";
// Call the static Java method
com_myapp_mobi_NFCCallback_nfcReceived___java_lang_String(CN1_THREAD_GET_STATE_PASS_ARG fromNSString(CN1_THREAD_GET_STATE_PASS_ARG dataToSendBack));
}
}
}
// Called when the session terminates
- (void)readerSession:(NFCNDEFReaderSession *)session didInvalidateWithError:(NSError *)error {
NSString *dataToSendBack = error.localizedDescription;
com_myapp_mobi_NFCCallback_nfcReceived___java_lang_String(CN1_THREAD_GET_STATE_PASS_ARG fromNSString(CN1_THREAD_GET_STATE_PASS_ARG dataToSendBack));
}
@end
- com_myapp_mobi_NfcInterfaceImpl.h
Код: Выделить всё
#import
#import // Import the CoreNFC framework
@interface com_myapp_mobi_NfcInterfaceImpl : NSObject {
}
-(void)unbindNFCListener;
-(void)bindNFCListener:(NSString*)param param1:(NSString*)param1;
-(BOOL)isSupported;
@property (strong, nonatomic) NFCNDEFReaderSession *session;
@end
Подробнее здесь: https://stackoverflow.com/questions/798 ... dename-ios
Мобильная версия