public async override Task<Results> Run () { string subscriptionType; if (!TryGetString ("subscriptionType", out subscriptionType)) throw new InvalidProgramException (); var container = CKContainer.DefaultContainer; var privateDB = container.PrivateCloudDatabase; CKSubscription subscription; var notificationInfo = new CKNotificationInfo { ShouldBadge = true }; var recordType = "Items"; string zoneName; if (TryGetString ("zoneName", out zoneName) && subscriptionType == "RecordZone") { notificationInfo.AlertBody = $"Zone {zoneName} has changed."; var zoneID = new CKRecordZoneID (zoneName, CKContainer.OwnerDefaultName); subscription = new CKSubscription (zoneID, 0) { NotificationInfo = notificationInfo }; } else { var subscriptionOptions = (CKSubscriptionOptions)0; bool firesOnRecordCreation; if (TryGetBool ("FiresOnRecordCreation", out firesOnRecordCreation) && firesOnRecordCreation) subscriptionOptions |= CKSubscriptionOptions.FiresOnRecordCreation; bool firesOnRecordUpdate; if (TryGetBool ("FiresOnRecordUpdate", out firesOnRecordUpdate) && firesOnRecordUpdate) subscriptionOptions |= CKSubscriptionOptions.FiresOnRecordUpdate; bool firesOnRecordDeletion; if (TryGetBool ("FiresOnRecordDeletion", out firesOnRecordDeletion) && firesOnRecordDeletion) subscriptionOptions |= CKSubscriptionOptions.FiresOnRecordDeletion; bool firesOnce; if (TryGetBool ("FiresOnce", out firesOnce) && firesOnce) subscriptionOptions |= CKSubscriptionOptions.FiresOnce; string beginsWithText; NSPredicate predicate = TryGetString ("name BEGINSWITH", out beginsWithText) ? NSPredicate.FromFormat ("name BEGINSWITH %@", (NSString)beginsWithText) : NSPredicate.FromValue (true); notificationInfo.AlertBody = $"Changed {recordType} satisfying {predicate.PredicateFormat}"; subscription = new CKSubscription (recordType, predicate, subscriptionOptions) { NotificationInfo = notificationInfo }; } var sub = await privateDB.SaveSubscriptionAsync (subscription); var results = new Results (); if (sub != null) results.Items.Add (new CKSubscriptionWrapper (sub)); return results; }
public void Subscribe() { if (Subscribed) { return; } var truePredicate = NSPredicate.FromValue(true); var itemSubscription = new CKSubscription(ItemRecordType, truePredicate, CKSubscriptionOptions.FiresOnRecordCreation); var notification = new CKNotificationInfo { AlertBody = "New Item Added", ShouldSendContentAvailable = true }; itemSubscription.NotificationInfo = notification; publicDatabase.SaveSubscription(itemSubscription, (sub, error) => { if (error != null) { Console.WriteLine("An error occured: {0}", error.LocalizedDescription); return; } Console.WriteLine("Subscribed to Item"); var defaults = NSUserDefaults.StandardUserDefaults; defaults.SetBool(true, "subscribed"); defaults.SetString(sub.SubscriptionId, "subscriptionID"); }); }
static CKSubscription CreateSubscription () { var subNotification = new CKNotificationInfo { AlertBody = "New Post" }; CKSubscription subscriptionToUpload = new CKSubscription (Post.RecordType, NSPredicate.FromValue (true), SubscriptionID, CKSubscriptionOptions.FiresOnRecordCreation); subscriptionToUpload.NotificationInfo = subNotification; return subscriptionToUpload; }
static CKSubscription CreateSubscription() { var subNotification = new CKNotificationInfo { AlertBody = "New Post" }; CKSubscription subscriptionToUpload = new CKSubscription(Post.RecordType, NSPredicate.FromValue(true), SubscriptionID, CKSubscriptionOptions.FiresOnRecordCreation); subscriptionToUpload.NotificationInfo = subNotification; return(subscriptionToUpload); }
async void Subscribe() { CKSubscription subscriptionToUpload = CreateSubscription(); try { await PublicDB.SaveSubscriptionAsync(subscriptionToUpload); ResetButton("Unsubscribe"); } catch (NSErrorException ex) { HandleSubscribeError(ex); } }
private void OnSubscriptionSaved(CKSubscription subscription, NSError error) { if (error == null) { Debug.Log(string.Format("subscription saved with id: {0} of type: {1}", subscription.SubscriptionID, subscription.SubscriptionType)); } else { Debug.LogError("error saving subscription: " + error.LocalizedDescription); } }
public IEnumerator Can_save_subscription() { var database = CKContainer.DefaultContainer().PrivateCloudDatabase; var wasCalled = false; CKSubscription subscriptionToSave = null; database.SaveSubscription(subscriptionToSave, (sub, error) => { }); yield return(WaitUntilWithTimeout(() => wasCalled, DefaultTimeout)); Assert.IsTrue(wasCalled); }
public IEnumerator Can_delete_subscription_by_its_id() { var database = CKContainer.DefaultContainer().PrivateCloudDatabase; var wasCalled = false; CKSubscription subscriptionToSave = null; database.DeleteSubscriptionWithID(subscriptionToSave.SubscriptionID, (sub, error) => { wasCalled = true; }); yield return(WaitUntilWithTimeout(() => wasCalled, DefaultTimeout)); Assert.IsTrue(wasCalled); }
public void Subscribe () { if (Subscribed) return; var truePredicate = NSPredicate.FromValue (true); var itemSubscription = new CKSubscription (ItemRecordType, truePredicate, CKSubscriptionOptions.FiresOnRecordCreation); var notification = new CKNotificationInfo { AlertBody = "New Item Added", ShouldSendContentAvailable = true }; itemSubscription.NotificationInfo = notification; publicDatabase.SaveSubscription (itemSubscription, (sub, error) => { if (error != null) { Console.WriteLine ("An error occured: {0}", error.LocalizedDescription); return; } Console.WriteLine ("Subscribed to Item"); var defaults = NSUserDefaults.StandardUserDefaults; defaults.SetBool (true, "subscribed"); defaults.SetString (sub.SubscriptionId, "subscriptionID"); }); }
public async override Task <Results> Run() { string subscriptionType; if (!TryGetString("subscriptionType", out subscriptionType)) { throw new InvalidProgramException(); } var container = CKContainer.DefaultContainer; var privateDB = container.PrivateCloudDatabase; CKSubscription subscription; var notificationInfo = new CKNotificationInfo { ShouldBadge = true }; var recordType = "Items"; string zoneName; if (TryGetString("zoneName", out zoneName) && subscriptionType == "RecordZone") { notificationInfo.AlertBody = $"Zone {zoneName} has changed."; var zoneID = new CKRecordZoneID(zoneName, CKContainer.OwnerDefaultName); subscription = new CKSubscription(zoneID, 0) { NotificationInfo = notificationInfo }; } else { var subscriptionOptions = (CKSubscriptionOptions)0; bool firesOnRecordCreation; if (TryGetBool("FiresOnRecordCreation", out firesOnRecordCreation) && firesOnRecordCreation) { subscriptionOptions |= CKSubscriptionOptions.FiresOnRecordCreation; } bool firesOnRecordUpdate; if (TryGetBool("FiresOnRecordUpdate", out firesOnRecordUpdate) && firesOnRecordUpdate) { subscriptionOptions |= CKSubscriptionOptions.FiresOnRecordUpdate; } bool firesOnRecordDeletion; if (TryGetBool("FiresOnRecordDeletion", out firesOnRecordDeletion) && firesOnRecordDeletion) { subscriptionOptions |= CKSubscriptionOptions.FiresOnRecordDeletion; } bool firesOnce; if (TryGetBool("FiresOnce", out firesOnce) && firesOnce) { subscriptionOptions |= CKSubscriptionOptions.FiresOnce; } string beginsWithText; NSPredicate predicate = TryGetString("name BEGINSWITH", out beginsWithText) ? NSPredicate.FromFormat("name BEGINSWITH %@", (NSString)beginsWithText) : NSPredicate.FromValue(true); notificationInfo.AlertBody = $"Changed {recordType} satisfying {predicate.PredicateFormat}"; subscription = new CKSubscription(recordType, predicate, subscriptionOptions) { NotificationInfo = notificationInfo }; } var sub = await privateDB.SaveSubscriptionAsync(subscription); var results = new Results(); if (sub != null) { results.Items.Add(new CKSubscriptionWrapper(sub)); } return(results); }
public CKSubscriptionWrapper(CKSubscription subscription) { this.subscription = subscription; }