Problem: The device client cannot synchronize with Unwired Server, with errors.
Explanation 1: The Unwired Server may be down. The error would report an NSException that includes name: loginToSync, and reason: No connection to server because the Unwired Server is down or unreachable. The loginToSync method can detect if the server is unreachable (the messaging layer is not in "Connected" state) within a timeout.
Solution: Report that Unwired Server is down, or wait for it to come back online. Alternatively, redesign using beginOnlineLogin.
Explanation 2: The connection between the device and Unwired Server may be down. You can test to make sure the device is connected as required using the SUPApplication API:
// make sure connection established
while ([SUPApplication connectionStatus] != SUPConnectionStatus_CONNECTED) {
NSLog(@"waiting to connect...");
sleep(2);
}
NSLog(@"connection established");
while ([SUPApplication registrationStatus] != SUPRegistrationStatus_REGISTERED) {
NSLog(@"waiting to register...");
sleep(2);
}
NSLog(@"registration completed");
[SampleApp_SampleAppDB beginOnlineLogin:@"supUser" password:@"s3pUser"];
while([SampleApp_SampleAppDB getOnlineLoginStatus].status == SUPLoginPending)
{
[NSThread sleepForTimeInterval:0.2];
}
// After this, the status will be either SUPLoginSuccess or SUPLoginFailure
if([SampleApp_SampleAppDB getOnlineLoginStatus].status == SUPLoginSuccess)
[SampleApp_SampleAppDB subscribe];
Solution: This reports the connection status. With a connection established, run this code on the device. After you run the code on the device, you can check from Sybase Control Center to see if the device is online.