Timers on group chats in Swift - ios

I'm building a group chat app in Swift 2. I want to set a 48 hour (or any other duration) timer for people to respond/contribute to the group conversation. If they don't they're out of the group chat. How do I do this?
I'm using the latest version of Xcode, and as mentioned above, I'm programming in Swift 2.

You can set background "timers" in your iOS app using UILocalNotification, but I've put timers in quotes because all it would do is show an alert on your user's screen after 48 hours have passed – it wouldn't actually boot them from the group chat.
The solution, then, is a server problem: however you are exchanging data between clients needs to be able to say, "sorry, you've been away too long" when the user tries to return.
The exception is if you're exchanging the messages using iCloud, then yes this would be app code: you'd need to query your public database to fetch the latest date the user contributed, and block them on the device from contributing further.

Related

In iOS Tracking, does Firebase receive data about a first_open event if an iPhone users chose "Do Not Track"?

Non-technical here, just learning Google Analytics and recently dwelling with app analytics for a client, where their developers didn't seem very skilled in Firebase and can't help me understand this issue - can you help?
I'm trying to understand how many raw downloads in Play Console and App Store Connect are actually users that launch the app, by looking at the first_open event. However, I'm aware that iOS users get a pop-up asking if they allow tracking (or maybe another pop-up similar?).
---> Question: If they do not allow tracking on this pop-up, would our Firebase still get data about these users launching the app? What about other events that were set-up with Firebase, such as initiating a booking?
PS: Also, now that you're here: App Store Connect is displaying 23 Total downloads (counting re-installs) for a given month in Country A, but Firebase is displaying 49 first_open events for the same country in the exact same month! How's this even possible, if a first_open only fires at least once per install, or doesn't even fire if the user never opens?

Fetching MUC Message History using MucSub in IOS

Every time when I’m signing into the app or reinstalling app I didn’t receive group message history. I have searched a lot for message archiving in MUC for iOS. Ejabberd doesn’t provide me old messages of the group although I configured setting into the YML file as mentioned in the attached image. I have kept history size of 10. It means at least 10 messages must be fetched every time when I login into the app or reinstall the app but I could not receive 10 messages every-time after reinstalling the app. I’m using Robbiehanson/XMPPFramework for iOS to implement XMPP based chat. I also performed MucSub based MUC to send/receive messages.
The scenario which I have performed:
I’m part of one MUC group. The member of the associated group sent 15 Messages into the group. I have received all those messages when I’m online. Now I am logged out from the group. Deleted the app from the device and reinstalled it into the device with the same login credentials. At this time I could not see the 15 messages which I received earlier. Here I would like to get all 15 Messages even after reinstalling the app into the iOS device.
I have searched on various Stack overflow questions but none of them are helpful to me. Your help will be appreciated.
Maybe you can try joining the room by specifying the history element with the maxstanzas specified.
We have similar case like we need last 3 months history while joining the room, So we mentioned that in history tag, Like below code sample
let historyElement = DDXMLElement(name: "history")
historyElement.addAttribute(withName: "since", stringValue: ((lastDate as NSDate).addingTimeInterval(1).xmppDateTimeString())!)
room.join(usingNickname: userJidString, history: historyElement)

Google Home no longer broadcasting messages from the SDK (10/17/2019)

Until yesterday, I was able to broadcast messages across my several google home speakers in my house. I've been using either the assistant-relay project (https://github.com/greghesp/assistant-relay) or the google-assistant-webserver project (https://github.com/AndBobsYourUncle/hassio-addons). Either project worked perfectly for the last year.
Has something changed in the last day/week?
Yesterday, I noticed I could send a command such as "What time is it?", or "What is the weather?", and it would return the appropriate weather or time. However, if I issued a "broadcast" command of text, or even using one of their precanned recorded messages (bed time, movie time, etc), the message was never broadcasted. Additionally, the MyActivity section of google shows that "You asked the Assistant to broadcast a message" and from the SDK.
Has something changed? Are we no longer able todo broadcasting programmatically?

How to send invitations to join a group from stand alone IOS app

I have a client who is requesting a feature that I'm not sure is possible as he describes it. He would like to send an invitation to one or more of his contacts via a text message, all from with in his stand alone app. That part would be fairly easy (I think). When the contact receives the text message containing the invitation and taps on it, one of two things happen:
1) if the recipient doesn't have the stand alone app on his device, he is directed to the App Store to download it. When the app is first run the user is added to the group that he was invited to. The app itself has UI that indicates that the user is a member of group .
2) If the user already had the app, he would simply be added to the group (if he accepts the invitation).I've looked into the Message and MessageUI frameworks. I'm not seeing a way to accomplish this task exactly. The text message would have to somehow contain data referencing the group info to be joined. And then actually configure the stand alone app with that group info - even if that means waiting for the app to be downloaded from the App Store first. Seems far fetched.
Does anyone have any pointers as to how this task may be accomplished?

Google Analytics for iOS 1-time (per user) event tracking

I am using Google Analytics iOS SDK (version 2 but will upgrade if it solves problem). How can I track what percentage of my app users have pressed a certain button at least once? I set up a lot of event tracking, thinking this would do it, but the reports are in terms of sessions not users. E.g., it will show what percentage of sessions included an event, so a single user may be counted multiple times. I defined a custom dimension variable that is unique for each app install, but I don't see how to use that as aggregation unit.
All I can think of is to define my own "one time events" by keeping my own database on the device and only pass to Google Analytics the first time it occurs. Is there no better way?
Google Analytics now offers User segment. You could create a user segment, and use the particular event you're interested in as a condition.
In the context of app measurement, a User is defined as a unique Client ID, which is the random ID generated by the GA SDK when the application first runs. It remains stable for as long as an app is installed.
More details here: http://analytics.blogspot.com/2013/07/re-imagining-segmentation-in-analytics.html

Resources