這是使用橋接報頭
在夫特使用SignalR目標C
首先,安裝莢
莢 'SignalR-ObjC'
============================= ==========================
添加目標C類命名SignalRClassViewController.h和SignalRClassViewController.m
==== ================================================== = SignalRClassViewController.h
#import <UIKit/UIKit.h>
#import <SignalR_ObjC/SRClientTransportInterface.h>
#import <SignalR_ObjC/SRHubProxy.h>
#import <SignalR_ObjC/SRHubConnection.h>
#import <SignalR_ObjC/SRConnection.h>
#import <SignalR_ObjC/SRHubConnectionInterface.h>
@interface SignalRClassViewController : UIViewController<SRConnectionDelegate, SRHubConnectionInterface, SRClientTransportInterface>
// This method is used to have Single Instance. In the whole app, Life cycle makes sure you are using only one Instance of SignalR Class because of it one to one connection so we need listeners which continue to listen each time.
+(SignalRClassViewController *)getInstance;
-(void)SignalRConnection;
-(void)SignalRStopCoonection;
// Write your Own Methods
-(void)assignUser;
-(void)GetWebActiveClients;
@end
=============================================== ======== SignalRClassViewController.m
#import "SignalRClassViewController.h"
@interface SignalRClassViewController()
{
NSMutableArray *array ;
}
@end
static SRHubProxy *chat = nil;
static SRHubConnection *hubConnection = nil;
@implementation SignalRClassViewController
static SignalRClassViewController *instance = nil;
+(SignalRClassViewController *)getInstance
{
@synchronized(self)
{
if(instance==nil)
{
instance= [SignalRClassViewController new];
[instance iniHUB];
}else{
[instance iniHUB];
}
}
return instance;
}
-(void) iniHUB{
if(hubConnection == nil){
NSDictionary *parameters;
parameters = @{ @"UserId": @"121",
@"UserToken": @"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJNeUhhc2giOiIyYzg5ODVmZC1jZDkyLTRjNzItOWNmYi01MWIyMWY1Y2FjZGQiLCIyYzg5ODVmZC1jZDkyLTRjNzItOWNmYi01MWIyMWY1Y2FjZGQiOjEyMX0.bDnuuroAmXvh-kifWN5jpJaSJVnMipuMD4QXon2lB-w"
};
hubConnection = [SRHubConnection connectionWithURLString:@"http://web.abc.......xyz.it" queryString:parameters];
// parameters if you want to authenticate connection
else use hubConnection = [SRHubConnection connectionWithURLString:@"http://web.abc.......xyz.it"];
[hubConnection setDelegate:self];
chat = [hubConnection createHubProxy:@"yourHubName"];
// Add event for which you want to active your listener when server trigger it
[chat on:@"ResponseAssignUserDevice" perform:self selector:@selector(responseAssignUserDevice:)];
[chat on:@"GetWebActiveClients" perform:self selector:@selector(ResponseGetWebActiveClients:)];
[hubConnection start];
// Start Connection
}
}
- (void)viewDidLoad {
[super viewDidLoad];
}
#pragma mark SRConnection Delegate
- (void)SRConnectionDidClose:(id<SRConnectionInterface>)connection{
NSLog(@"Connection close");
[self removeChatObserver];
[self iniHUB];
}
-(void) removeChatObserver{
if(chat!=nil){
chat=nil;
hubConnection=nil;
}
}
- (void)SRConnectionDidSlow:(id<SRConnectionInterface>)connection{
NSLog(@"Reconnect Slow");
}
- (void)SRConnectionWillReconnect:(id<SRConnectionInterface>)connection{
NSLog(@"Reconnected");
}
-(void)SignalRStopCoonection{
// Start the connection
if(hubConnection!= nil){
[hubConnection stop];
[self removeChatObserver];
}
}
-(void)SRConnectionDidOpen:(SRHubConnection*)connection{
NSLog(@"SR Conection open");
// When Connection is open call AssignUser
[self assignUser];
}
-(void)assignUser{
NSDictionary *parameters;
parameters = @{ @"UserId": @"121",
@"DeviceType": @"Mobile",
@"WebToken" : @"NA",
@"DeviceOS" : @"iPhone",
@"BrowserName" : @"NA"
};
array = [[NSMutableArray alloc]init];
[array addObject:parameters];
[chat invoke:@"AssignUserDevice" withArgs:array];
// This will invoke AssignUserDevice which is on server and you have added it selector when server will reponse on this name responseAssignUserDevice
}
- (void)responseAssignUserDevice:(NSString *)message {
// Print the message when it comes in
NSLog(@"SR msg %@",message);
}
-(void)GetWebActiveClients{
array = [[NSMutableArray alloc]init];
[array addObject:[NSString stringWithFormat:@"121"]];
[chat invoke:@"GetWebActiveClients" withArgs:array];
}
- (void)ResponseGetWebActiveClients:(NSString *)message
{
// Print the message when it comes in
NSLog(@"SR msg responseGetArticleByDate %@",message);
}
@end
=============================== ========================
ViewController.Swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func assignUser(_ sender: Any) {
SignalRClassViewController.getInstance().assignUser()
}
@IBAction func GetWebActiveClients(_ sender: Any) {
SignalRClassViewController.getInstance().getWebActiveClients()
}
}
請檢查code here
我與SignalR工作,我可以幫助O.目標C過程。不是迅速 –
@AhbhishekSharma沒問題可能會有所幫助。謝謝 – ava
等待我正在爲您創建一個快速應用程序並儘快發送給您。 –