3
我尝试使用iOS.Xamarin执行iOS应用程序。我也有一个服务器,我用websockets将事件发送到我的应用程序。但是websockets函数在另一个项目中。多项目解决方案中的事件驱动设计
因此,如果服务器发送新事件,我想告诉iOS项目新事件已到达。我无法返回它,因为我无法将两个项目互相引用。
如何在一个解决方案中为多个项目实现事件驱动设计?
这里是我当前的代码:
的iOS项目
public partial class LobbyViewController : UIViewController
{
public LobbyViewController (IntPtr handle) : base (handle)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
}
public void changePage()
{
UIViewController introViewController = Storyboard.InstantiateViewController("IntroViewController") as IntroViewController;
introViewController.ModalTransitionStyle = UIModalTransitionStyle.CoverVertical;
PresentViewController(introViewController, true, null);
}
}
一般项目(在我的事件到达)
public static class Sockets
{
public static Socket socket;
static bool isConnected = false;
public static void Main(string token)
{
socket = connect(token);
}
private static Socket connect(string Token)
{
var options = new IO.Options();
options.Query = new Dictionary<string, string>()
{
{ "token", Token }
};
var socket = IO.Socket(Resource.SocketsUrl, options);
socket.On(Socket.EVENT_CONNECT,() =>
{
isConnected = true;
});
socket.On(Socket.EVENT_ERROR, (error) =>
{
appendLogMessage("ERROR! " + error.ToString(), true);
});
socket.On(Socket.EVENT_DISCONNECT, (data) =>
{
isConnected = false;
appendLogMessage("Disconected");
});
socket.On(Socket.EVENT_MESSAGE, (data) =>
{
appendLogMessage(data.ToString(), true);
});
socket.On("lobbyParticipantAdded", (data) =>
{
appendLogMessage(data.ToString(), true);
});
socket.On("lobbyFlowStart", (data) =>
{
appendLogMessage(data.ToString(), true);
});
socket.On("quizQuestion", (data) =>
{
appendLogMessage(data.ToString(), true);
});
socket.On("gameEnd", (data) =>
{
appendLogMessage(data.ToString(), true);
});
return socket;
}
}
您可以尝试在发送套接字时向iOS应用程序发送推送通知。 –