Starting background fetching of messages.

This commit is contained in:
Frederic Jacobs 2014-12-01 23:24:35 +01:00
parent 6446c6fbe0
commit 35a2762c5f
47 changed files with 114 additions and 747 deletions

View File

@ -939,45 +939,7 @@
B63AF5C61A1F757900D01AAD /* TSSocketManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TSSocketManager.m; sourceTree = "<group>"; };
B63AF5D61A1F889500D01AAD /* SubProtocol.pb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubProtocol.pb.h; sourceTree = "<group>"; };
B63AF5D71A1F889500D01AAD /* SubProtocol.pb.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SubProtocol.pb.m; sourceTree = "<group>"; };
B6416F37199A0478003C5699 /* an */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = an; path = Localizable.strings; sourceTree = "<group>"; };
B6416F3A199A0478003C5699 /* ar */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ar; path = Localizable.strings; sourceTree = "<group>"; };
B6416F3D199A0478003C5699 /* be */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = be; path = Localizable.strings; sourceTree = "<group>"; };
B6416F40199A0478003C5699 /* bg_BG */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = bg_BG; path = Localizable.strings; sourceTree = "<group>"; };
B6416F43199A0478003C5699 /* ca-ES */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ca-ES"; path = Localizable.strings; sourceTree = "<group>"; };
B6416F46199A0478003C5699 /* ca */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ca; path = Localizable.strings; sourceTree = "<group>"; };
B6416F49199A0478003C5699 /* cs-CZ */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "cs-CZ"; path = Localizable.strings; sourceTree = "<group>"; };
B6416F4C199A0478003C5699 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = Localizable.strings; sourceTree = "<group>"; };
B6416F4F199A0478003C5699 /* da */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = da; path = Localizable.strings; sourceTree = "<group>"; };
B6416F52199A0478003C5699 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = Localizable.strings; sourceTree = "<group>"; };
B6416F55199A0478003C5699 /* el_GR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = el_GR; path = Localizable.strings; sourceTree = "<group>"; };
B6416F58199A0478003C5699 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Localizable.strings; sourceTree = "<group>"; };
B6416F5B199A0478003C5699 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Localizable.strings; sourceTree = "<group>"; };
B6416F5E199A0478003C5699 /* eu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = eu; path = Localizable.strings; sourceTree = "<group>"; };
B6416F61199A0478003C5699 /* fa_IR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa_IR; path = Localizable.strings; sourceTree = "<group>"; };
B6416F64199A0478003C5699 /* fa */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fa; path = Localizable.strings; sourceTree = "<group>"; };
B6416F67199A0478003C5699 /* fi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fi; path = Localizable.strings; sourceTree = "<group>"; };
B6416F6A199A0478003C5699 /* fil */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fil; path = Localizable.strings; sourceTree = "<group>"; };
B6416F6D199A0478003C5699 /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Localizable.strings; sourceTree = "<group>"; };
B6416F70199A0478003C5699 /* he */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = he; path = Localizable.strings; sourceTree = "<group>"; };
B6416F73199A0478003C5699 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = Localizable.strings; sourceTree = "<group>"; };
B6416F76199A0478003C5699 /* it_IT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = it_IT; path = Localizable.strings; sourceTree = "<group>"; };
B6416F79199A0478003C5699 /* ja_JP */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ja_JP; path = Localizable.strings; sourceTree = "<group>"; };
B6416F7C199A0478003C5699 /* lv */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = lv; path = Localizable.strings; sourceTree = "<group>"; };
B6416F7F199A0478003C5699 /* nb */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nb; path = Localizable.strings; sourceTree = "<group>"; };
B6416F82199A0478003C5699 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = Localizable.strings; sourceTree = "<group>"; };
B6416F85199A0478003C5699 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = Localizable.strings; sourceTree = "<group>"; };
B6416F88199A0478003C5699 /* pt_BR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt_BR; path = Localizable.strings; sourceTree = "<group>"; };
B6416F8B199A0478003C5699 /* ro-RO */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "ro-RO"; path = Localizable.strings; sourceTree = "<group>"; };
B6416F8E199A0478003C5699 /* ro */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ro; path = Localizable.strings; sourceTree = "<group>"; };
B6416F91199A0478003C5699 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = Localizable.strings; sourceTree = "<group>"; };
B6416F94199A0478003C5699 /* sl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sl; path = Localizable.strings; sourceTree = "<group>"; };
B6416F97199A0478003C5699 /* sq */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sq; path = Localizable.strings; sourceTree = "<group>"; };
B6416F9A199A0478003C5699 /* sv_SE */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv_SE; path = Localizable.strings; sourceTree = "<group>"; };
B6416F9D199A0478003C5699 /* ta */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ta; path = Localizable.strings; sourceTree = "<group>"; };
B6416FA0199A0478003C5699 /* tr_TR */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr_TR; path = Localizable.strings; sourceTree = "<group>"; };
B6416FA3199A0478003C5699 /* uk */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = uk; path = Localizable.strings; sourceTree = "<group>"; };
B6416FA6199A0478003C5699 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_CN; path = Localizable.strings; sourceTree = "<group>"; };
B6416FAC199A0478003C5699 /* zh_TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_TW; path = Localizable.strings; sourceTree = "<group>"; };
B657DDC91911A40500F45B0C /* Signal.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Signal.entitlements; sourceTree = "<group>"; };
B65EDA1019E1BE6400AAA7CB /* RPAPICall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RPAPICall.h; sourceTree = "<group>"; };
B65EDA1119E1BE6400AAA7CB /* RPAPICall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RPAPICall.m; sourceTree = "<group>"; };
@ -2225,105 +2187,6 @@
path = WebSockets;
sourceTree = "<group>";
};
B6416F35199A0478003C5699 /* an.lproj */ = {
isa = PBXGroup;
children = (
B6416F36199A0478003C5699 /* Localizable.strings */,
);
name = an.lproj;
path = translations/an.lproj;
sourceTree = "<group>";
};
B6416F38199A0478003C5699 /* ar.lproj */ = {
isa = PBXGroup;
children = (
B6416F39199A0478003C5699 /* Localizable.strings */,
);
name = ar.lproj;
path = translations/ar.lproj;
sourceTree = "<group>";
};
B6416F3B199A0478003C5699 /* be.lproj */ = {
isa = PBXGroup;
children = (
B6416F3C199A0478003C5699 /* Localizable.strings */,
);
name = be.lproj;
path = translations/be.lproj;
sourceTree = "<group>";
};
B6416F3E199A0478003C5699 /* bg_BG.lproj */ = {
isa = PBXGroup;
children = (
B6416F3F199A0478003C5699 /* Localizable.strings */,
);
name = bg_BG.lproj;
path = translations/bg_BG.lproj;
sourceTree = "<group>";
};
B6416F41199A0478003C5699 /* ca-ES.lproj */ = {
isa = PBXGroup;
children = (
B6416F42199A0478003C5699 /* Localizable.strings */,
);
name = "ca-ES.lproj";
path = "translations/ca-ES.lproj";
sourceTree = "<group>";
};
B6416F44199A0478003C5699 /* ca.lproj */ = {
isa = PBXGroup;
children = (
B6416F45199A0478003C5699 /* Localizable.strings */,
);
name = ca.lproj;
path = translations/ca.lproj;
sourceTree = "<group>";
};
B6416F47199A0478003C5699 /* cs-CZ.lproj */ = {
isa = PBXGroup;
children = (
B6416F48199A0478003C5699 /* Localizable.strings */,
);
name = "cs-CZ.lproj";
path = "translations/cs-CZ.lproj";
sourceTree = "<group>";
};
B6416F4A199A0478003C5699 /* cs.lproj */ = {
isa = PBXGroup;
children = (
B6416F4B199A0478003C5699 /* Localizable.strings */,
);
name = cs.lproj;
path = translations/cs.lproj;
sourceTree = "<group>";
};
B6416F4D199A0478003C5699 /* da.lproj */ = {
isa = PBXGroup;
children = (
B6416F4E199A0478003C5699 /* Localizable.strings */,
);
name = da.lproj;
path = translations/da.lproj;
sourceTree = "<group>";
};
B6416F50199A0478003C5699 /* de.lproj */ = {
isa = PBXGroup;
children = (
B6416F51199A0478003C5699 /* Localizable.strings */,
);
name = de.lproj;
path = translations/de.lproj;
sourceTree = "<group>";
};
B6416F53199A0478003C5699 /* el_GR.lproj */ = {
isa = PBXGroup;
children = (
B6416F54199A0478003C5699 /* Localizable.strings */,
);
name = el_GR.lproj;
path = translations/el_GR.lproj;
sourceTree = "<group>";
};
B6416F56199A0478003C5699 /* en.lproj */ = {
isa = PBXGroup;
children = (
@ -2333,249 +2196,6 @@
path = translations/en.lproj;
sourceTree = "<group>";
};
B6416F59199A0478003C5699 /* es.lproj */ = {
isa = PBXGroup;
children = (
B6416F5A199A0478003C5699 /* Localizable.strings */,
);
name = es.lproj;
path = translations/es.lproj;
sourceTree = "<group>";
};
B6416F5C199A0478003C5699 /* eu.lproj */ = {
isa = PBXGroup;
children = (
B6416F5D199A0478003C5699 /* Localizable.strings */,
);
name = eu.lproj;
path = translations/eu.lproj;
sourceTree = "<group>";
};
B6416F5F199A0478003C5699 /* fa_IR.lproj */ = {
isa = PBXGroup;
children = (
B6416F60199A0478003C5699 /* Localizable.strings */,
);
name = fa_IR.lproj;
path = translations/fa_IR.lproj;
sourceTree = "<group>";
};
B6416F62199A0478003C5699 /* fa.lproj */ = {
isa = PBXGroup;
children = (
B6416F63199A0478003C5699 /* Localizable.strings */,
);
name = fa.lproj;
path = translations/fa.lproj;
sourceTree = "<group>";
};
B6416F65199A0478003C5699 /* fi.lproj */ = {
isa = PBXGroup;
children = (
B6416F66199A0478003C5699 /* Localizable.strings */,
);
name = fi.lproj;
path = translations/fi.lproj;
sourceTree = "<group>";
};
B6416F68199A0478003C5699 /* fil.lproj */ = {
isa = PBXGroup;
children = (
B6416F69199A0478003C5699 /* Localizable.strings */,
);
name = fil.lproj;
path = translations/fil.lproj;
sourceTree = "<group>";
};
B6416F6B199A0478003C5699 /* fr.lproj */ = {
isa = PBXGroup;
children = (
B6416F6C199A0478003C5699 /* Localizable.strings */,
);
name = fr.lproj;
path = translations/fr.lproj;
sourceTree = "<group>";
};
B6416F6E199A0478003C5699 /* he.lproj */ = {
isa = PBXGroup;
children = (
B6416F6F199A0478003C5699 /* Localizable.strings */,
);
name = he.lproj;
path = translations/he.lproj;
sourceTree = "<group>";
};
B6416F71199A0478003C5699 /* hu.lproj */ = {
isa = PBXGroup;
children = (
B6416F72199A0478003C5699 /* Localizable.strings */,
);
name = hu.lproj;
path = translations/hu.lproj;
sourceTree = "<group>";
};
B6416F74199A0478003C5699 /* it_IT.lproj */ = {
isa = PBXGroup;
children = (
B6416F75199A0478003C5699 /* Localizable.strings */,
);
name = it_IT.lproj;
path = translations/it_IT.lproj;
sourceTree = "<group>";
};
B6416F77199A0478003C5699 /* ja_JP.lproj */ = {
isa = PBXGroup;
children = (
B6416F78199A0478003C5699 /* Localizable.strings */,
);
name = ja_JP.lproj;
path = translations/ja_JP.lproj;
sourceTree = "<group>";
};
B6416F7A199A0478003C5699 /* lv.lproj */ = {
isa = PBXGroup;
children = (
B6416F7B199A0478003C5699 /* Localizable.strings */,
);
name = lv.lproj;
path = translations/lv.lproj;
sourceTree = "<group>";
};
B6416F7D199A0478003C5699 /* nb.lproj */ = {
isa = PBXGroup;
children = (
B6416F7E199A0478003C5699 /* Localizable.strings */,
);
name = nb.lproj;
path = translations/nb.lproj;
sourceTree = "<group>";
};
B6416F80199A0478003C5699 /* nl.lproj */ = {
isa = PBXGroup;
children = (
B6416F81199A0478003C5699 /* Localizable.strings */,
);
name = nl.lproj;
path = translations/nl.lproj;
sourceTree = "<group>";
};
B6416F83199A0478003C5699 /* pl.lproj */ = {
isa = PBXGroup;
children = (
B6416F84199A0478003C5699 /* Localizable.strings */,
);
name = pl.lproj;
path = translations/pl.lproj;
sourceTree = "<group>";
};
B6416F86199A0478003C5699 /* pt_BR.lproj */ = {
isa = PBXGroup;
children = (
B6416F87199A0478003C5699 /* Localizable.strings */,
);
name = pt_BR.lproj;
path = translations/pt_BR.lproj;
sourceTree = "<group>";
};
B6416F89199A0478003C5699 /* ro-RO.lproj */ = {
isa = PBXGroup;
children = (
B6416F8A199A0478003C5699 /* Localizable.strings */,
);
name = "ro-RO.lproj";
path = "translations/ro-RO.lproj";
sourceTree = "<group>";
};
B6416F8C199A0478003C5699 /* ro.lproj */ = {
isa = PBXGroup;
children = (
B6416F8D199A0478003C5699 /* Localizable.strings */,
);
name = ro.lproj;
path = translations/ro.lproj;
sourceTree = "<group>";
};
B6416F8F199A0478003C5699 /* ru.lproj */ = {
isa = PBXGroup;
children = (
B6416F90199A0478003C5699 /* Localizable.strings */,
);
name = ru.lproj;
path = translations/ru.lproj;
sourceTree = "<group>";
};
B6416F92199A0478003C5699 /* sl.lproj */ = {
isa = PBXGroup;
children = (
B6416F93199A0478003C5699 /* Localizable.strings */,
);
name = sl.lproj;
path = translations/sl.lproj;
sourceTree = "<group>";
};
B6416F95199A0478003C5699 /* sq.lproj */ = {
isa = PBXGroup;
children = (
B6416F96199A0478003C5699 /* Localizable.strings */,
);
name = sq.lproj;
path = translations/sq.lproj;
sourceTree = "<group>";
};
B6416F98199A0478003C5699 /* sv_SE.lproj */ = {
isa = PBXGroup;
children = (
B6416F99199A0478003C5699 /* Localizable.strings */,
);
name = sv_SE.lproj;
path = translations/sv_SE.lproj;
sourceTree = "<group>";
};
B6416F9B199A0478003C5699 /* ta.lproj */ = {
isa = PBXGroup;
children = (
B6416F9C199A0478003C5699 /* Localizable.strings */,
);
name = ta.lproj;
path = translations/ta.lproj;
sourceTree = "<group>";
};
B6416F9E199A0478003C5699 /* tr_TR.lproj */ = {
isa = PBXGroup;
children = (
B6416F9F199A0478003C5699 /* Localizable.strings */,
);
name = tr_TR.lproj;
path = translations/tr_TR.lproj;
sourceTree = "<group>";
};
B6416FA1199A0478003C5699 /* uk.lproj */ = {
isa = PBXGroup;
children = (
B6416FA2199A0478003C5699 /* Localizable.strings */,
);
name = uk.lproj;
path = translations/uk.lproj;
sourceTree = "<group>";
};
B6416FA4199A0478003C5699 /* zh_CN.lproj */ = {
isa = PBXGroup;
children = (
B6416FA5199A0478003C5699 /* Localizable.strings */,
);
name = zh_CN.lproj;
path = translations/zh_CN.lproj;
sourceTree = "<group>";
};
B6416FAA199A0478003C5699 /* zh_TW.lproj */ = {
isa = PBXGroup;
children = (
B6416FAB199A0478003C5699 /* Localizable.strings */,
);
name = zh_TW.lproj;
path = translations/zh_TW.lproj;
sourceTree = "<group>";
};
B65EDA0F19E1BE2200AAA7CB /* Requests */ = {
isa = PBXGroup;
children = (
@ -2760,45 +2380,7 @@
B6B6C3C419193F5B00C0B76B /* Translations */ = {
isa = PBXGroup;
children = (
B6416F35199A0478003C5699 /* an.lproj */,
B6416F38199A0478003C5699 /* ar.lproj */,
B6416F3B199A0478003C5699 /* be.lproj */,
B6416F3E199A0478003C5699 /* bg_BG.lproj */,
B6416F41199A0478003C5699 /* ca-ES.lproj */,
B6416F44199A0478003C5699 /* ca.lproj */,
B6416F47199A0478003C5699 /* cs-CZ.lproj */,
B6416F4A199A0478003C5699 /* cs.lproj */,
B6416F4D199A0478003C5699 /* da.lproj */,
B6416F50199A0478003C5699 /* de.lproj */,
B6416F53199A0478003C5699 /* el_GR.lproj */,
B6416F56199A0478003C5699 /* en.lproj */,
B6416F59199A0478003C5699 /* es.lproj */,
B6416F5C199A0478003C5699 /* eu.lproj */,
B6416F5F199A0478003C5699 /* fa_IR.lproj */,
B6416F62199A0478003C5699 /* fa.lproj */,
B6416F65199A0478003C5699 /* fi.lproj */,
B6416F68199A0478003C5699 /* fil.lproj */,
B6416F6B199A0478003C5699 /* fr.lproj */,
B6416F6E199A0478003C5699 /* he.lproj */,
B6416F71199A0478003C5699 /* hu.lproj */,
B6416F74199A0478003C5699 /* it_IT.lproj */,
B6416F77199A0478003C5699 /* ja_JP.lproj */,
B6416F7A199A0478003C5699 /* lv.lproj */,
B6416F7D199A0478003C5699 /* nb.lproj */,
B6416F80199A0478003C5699 /* nl.lproj */,
B6416F83199A0478003C5699 /* pl.lproj */,
B6416F86199A0478003C5699 /* pt_BR.lproj */,
B6416F89199A0478003C5699 /* ro-RO.lproj */,
B6416F8C199A0478003C5699 /* ro.lproj */,
B6416F8F199A0478003C5699 /* ru.lproj */,
B6416F92199A0478003C5699 /* sl.lproj */,
B6416F95199A0478003C5699 /* sq.lproj */,
B6416F98199A0478003C5699 /* sv_SE.lproj */,
B6416F9B199A0478003C5699 /* ta.lproj */,
B6416F9E199A0478003C5699 /* tr_TR.lproj */,
B6416FA1199A0478003C5699 /* uk.lproj */,
B6416FA4199A0478003C5699 /* zh_CN.lproj */,
B6416FAA199A0478003C5699 /* zh_TW.lproj */,
);
name = Translations;
sourceTree = "<group>";
@ -3824,94 +3406,6 @@
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
B6416F36199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F37199A0478003C5699 /* an */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F39199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F3A199A0478003C5699 /* ar */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F3C199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F3D199A0478003C5699 /* be */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F3F199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F40199A0478003C5699 /* bg_BG */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F42199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F43199A0478003C5699 /* ca-ES */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F45199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F46199A0478003C5699 /* ca */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F48199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F49199A0478003C5699 /* cs-CZ */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F4B199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F4C199A0478003C5699 /* cs */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F4E199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F4F199A0478003C5699 /* da */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F51199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F52199A0478003C5699 /* de */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F54199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F55199A0478003C5699 /* el_GR */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F57199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
@ -3920,222 +3414,6 @@
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F5A199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F5B199A0478003C5699 /* es */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F5D199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F5E199A0478003C5699 /* eu */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F60199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F61199A0478003C5699 /* fa_IR */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F63199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F64199A0478003C5699 /* fa */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F66199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F67199A0478003C5699 /* fi */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F69199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F6A199A0478003C5699 /* fil */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F6C199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F6D199A0478003C5699 /* fr */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F6F199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F70199A0478003C5699 /* he */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F72199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F73199A0478003C5699 /* hu */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F75199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F76199A0478003C5699 /* it_IT */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F78199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F79199A0478003C5699 /* ja_JP */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F7B199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F7C199A0478003C5699 /* lv */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F7E199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F7F199A0478003C5699 /* nb */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F81199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F82199A0478003C5699 /* nl */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F84199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F85199A0478003C5699 /* pl */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F87199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F88199A0478003C5699 /* pt_BR */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F8A199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F8B199A0478003C5699 /* ro-RO */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F8D199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F8E199A0478003C5699 /* ro */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F90199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F91199A0478003C5699 /* ru */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F93199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F94199A0478003C5699 /* sl */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F96199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F97199A0478003C5699 /* sq */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F99199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F9A199A0478003C5699 /* sv_SE */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F9C199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416F9D199A0478003C5699 /* ta */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416F9F199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416FA0199A0478003C5699 /* tr_TR */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416FA2199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416FA3199A0478003C5699 /* uk */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416FA5199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416FA6199A0478003C5699 /* zh_CN */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
B6416FAB199A0478003C5699 /* Localizable.strings */ = {
isa = PBXVariantGroup;
children = (
B6416FAC199A0478003C5699 /* zh_TW */,
);
name = Localizable.strings;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
@ -4253,7 +3531,7 @@
LLVM_LTO = NO;
OTHER_LDFLAGS = "$(inherited)";
PRODUCT_NAME = Signal;
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE = "a377b8e6-d43e-485d-8830-bc7bfa3d1731";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = 1;
TEST_AFTER_BUILD = YES;
@ -4488,7 +3766,7 @@
LLVM_LTO = NO;
OTHER_LDFLAGS = "$(inherited)";
PRODUCT_NAME = Signal;
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE = "a377b8e6-d43e-485d-8830-bc7bfa3d1731";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = 1;
TEST_AFTER_BUILD = YES;
@ -4542,7 +3820,7 @@
LLVM_LTO = NO;
OTHER_LDFLAGS = "$(inherited)";
PRODUCT_NAME = Signal;
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE = "a377b8e6-d43e-485d-8830-bc7bfa3d1731";
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = 1;
TEST_AFTER_BUILD = YES;

View File

@ -199,12 +199,34 @@
}
-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
if([self.notificationTracker shouldProcessNotification:userInfo]){
[self application:application didReceiveRemoteNotification:userInfo];
} else{
DDLogDebug(@"Push already processed. Skipping.");
if ([self isRedPhonePush:userInfo]) {
if ([self.notificationTracker shouldProcessNotification:userInfo]){
[self application:application didReceiveRemoteNotification:userInfo];
} else{
DDLogDebug(@"Push already processed. Skipping.");
completionHandler(UIBackgroundFetchResultNewData);
}
} else {
[TSSocketManager becomeActive];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 20 * NSEC_PER_SEC),
dispatch_get_main_queue(), ^{
// Check result of your operation and call completion block with the result
NSLog(@"Hello");
completionHandler(UIBackgroundFetchResultNewData);
});
}
}
- (BOOL)isRedPhonePush:(NSDictionary*)pushDict {
NSDictionary *aps = [pushDict objectForKey:@"aps"];
NSString *category = [aps objectForKey:@"category"];
if ([category isEqualToString:Signal_Call_Category]) {
return YES;
} else{
return NO;
}
completionHandler(UIBackgroundFetchResultNewData);
}
-(void) applicationDidBecomeActive:(UIApplication *)application {
@ -224,10 +246,14 @@
}
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler{
if ([identifier isEqualToString:Signal_Accept_Identifier]) {
if ([identifier isEqualToString:Signal_Call_Accept_Identifier]) {
[self.callPickUpFuture trySetResult:@YES];
} else if ([identifier isEqualToString:Signal_Decline_Identifier]){
} else if ([identifier isEqualToString:Signal_Call_Decline_Identifier]){
[self.callPickUpFuture trySetResult:@NO];
} else if ([identifier isEqualToString:Signal_Message_MarkAsRead_Identifier]){
//TODO
} else if ([identifier isEqualToString:Signal_Message_View_Identifier]){
//TODO
}
completionHandler();
}

View File

@ -9,8 +9,14 @@
#import <CollapsingFutures.h>
#import <Foundation/Foundation.h>
#define Signal_Accept_Identifier @"Signal_Call_Accept"
#define Signal_Decline_Identifier @"Signal_Call_Decline"
#define Signal_Call_Accept_Identifier @"Signal_Call_Accept"
#define Signal_Call_Decline_Identifier @"Signal_Call_Decline"
#define Signal_Call_Category @"Signal_IncomingCall"
#define Signal_Message_Category @"Signal_Message"
#define Signal_Message_View_Identifier @"Signal_Message_Read"
#define Signal_Message_MarkAsRead_Identifier @"Signal_Message_MarkAsRead"
/**
* The Push Manager is responsible for registering the device for Signal push notifications.

View File

@ -106,7 +106,10 @@
-(TOCFuture*)registerForUserNotificationsFuture{
self.userNotificationFutureSource = [TOCFutureSource new];
[UIApplication.sharedApplication registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationType)[self allNotificationTypes] categories:[NSSet setWithObject:[self userNotificationsCallCategory]]]];
NSSet *setOfCategories = [NSSet setWithArray:@[[self userNotificationsCallCategory], [self userNotificationsMessageCategory]]];
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationType)[self allNotificationTypes]
categories:setOfCategories];
[UIApplication.sharedApplication registerUserNotificationSettings:settings];
return self.userNotificationFutureSource.future;
}
@ -195,23 +198,47 @@
return YES;
}
-(UIUserNotificationCategory*)userNotificationsCallCategory{
- (UIUserNotificationCategory*)userNotificationsMessageCategory{
UIMutableUserNotificationAction *action_accept = [UIMutableUserNotificationAction new];
action_accept.identifier = Signal_Message_View_Identifier;
action_accept.title = NSLocalizedString(@"View", @"");
action_accept.activationMode = UIUserNotificationActivationModeForeground;
action_accept.destructive = NO;
action_accept.authenticationRequired = YES;
UIMutableUserNotificationAction *action_decline = [UIMutableUserNotificationAction new];
action_decline.identifier = Signal_Message_MarkAsRead_Identifier;
action_decline.title = NSLocalizedString(@"Mark as read", @"");
action_decline.activationMode = UIUserNotificationActivationModeBackground;
action_decline.destructive = NO;
action_decline.authenticationRequired = NO;
UIMutableUserNotificationCategory *messageCategory = [UIMutableUserNotificationCategory new];
messageCategory.identifier = Signal_Call_Category;
[messageCategory setActions:@[action_accept, action_decline] forContext:UIUserNotificationActionContextMinimal];
[messageCategory setActions:@[action_accept, action_decline] forContext:UIUserNotificationActionContextDefault];
return messageCategory;
}
- (UIUserNotificationCategory*)userNotificationsCallCategory{
UIMutableUserNotificationAction *action_accept = [UIMutableUserNotificationAction new];
action_accept.identifier = Signal_Accept_Identifier;
action_accept.identifier = Signal_Call_Accept_Identifier;
action_accept.title = NSLocalizedString(@"ANSWER_CALL_BUTTON_TITLE", @"");
action_accept.activationMode = UIUserNotificationActivationModeForeground;
action_accept.destructive = NO;
action_accept.authenticationRequired = NO;
UIMutableUserNotificationAction *action_decline = [UIMutableUserNotificationAction new];
action_decline.identifier = Signal_Decline_Identifier;
action_decline.identifier = Signal_Call_Decline_Identifier;
action_decline.title = NSLocalizedString(@"REJECT_CALL_BUTTON_TITLE", @"");
action_decline.activationMode = UIUserNotificationActivationModeBackground;
action_decline.destructive = NO;
action_decline.authenticationRequired = NO;
UIMutableUserNotificationCategory *callCategory = [UIMutableUserNotificationCategory new];
callCategory.identifier = @"Signal_IncomingCall";
callCategory.identifier = Signal_Call_Category;
[callCategory setActions:@[action_accept, action_decline] forContext:UIUserNotificationActionContextMinimal];
[callCategory setActions:@[action_accept, action_decline] forContext:UIUserNotificationActionContextDefault];

View File

@ -71,7 +71,11 @@
}
- (TSRecipient *)recipientWithTransaction:(YapDatabaseReadTransaction*)transaction{
return [TSRecipient recipientWithTextSecureIdentifier:self.contactIdentifier withTransaction:transaction];
TSRecipient *recipient = [TSRecipient recipientWithTextSecureIdentifier:self.contactIdentifier withTransaction:transaction];
if (!recipient){
recipient = [[TSRecipient alloc] initWithTextSecureIdentifier:self.contactIdentifier relay:nil];
}
return recipient;
}
@end

View File

@ -80,4 +80,16 @@ const struct TSMessageEdges TSMessageEdges = {
return @"Interaction description";
}
- (void)saveWithTransaction:(YapDatabaseReadWriteTransaction *)transaction{
[super saveWithTransaction:transaction];
TSThread *fetchedThread = [TSThread fetchObjectWithUniqueID:self.uniqueThreadId];
uint64_t timeStamp = [TSInteraction timeStampFromString:self.uniqueId];
if (timeStamp > fetchedThread.lastMessageId) {
fetchedThread.lastMessageId = timeStamp;
}
[fetchedThread saveWithTransaction:transaction];
}
@end

View File

@ -80,11 +80,14 @@ dispatch_queue_t sendingQueue() {
TSSubmitMessageRequest *request = [[TSSubmitMessageRequest alloc] initWithRecipient:recipient.uniqueId messages:messages relay:recipient.relay timeStamp:message.timeStamp];
[[TSNetworkManager sharedManager] queueAuthenticatedRequest:request success:^(NSURLSessionDataTask *task, id responseObject) {
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[recipient saveWithTransaction:transaction];
}];
[self handleMessageSent:message inThread:thread];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
long statuscode = response.statusCode;
switch (statuscode) {
case 404:
// Recipient not found
@ -99,6 +102,10 @@ dispatch_queue_t sendingQueue() {
DDLogWarn(@"Stale devices");
break;
default:
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[message setMessageState:TSOutgoingMessageStateUnsent];
[message saveWithTransaction:transaction];
}];
break;
}
}];
@ -110,9 +117,6 @@ dispatch_queue_t sendingQueue() {
[self.dbConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *transaction) {
[message setMessageState:TSOutgoingMessageStateSent];
[message saveWithTransaction:transaction];
TSThread *fetchedThread = [TSThread fetchObjectWithUniqueID:thread.uniqueId];
fetchedThread.lastMessageId = [TSInteraction timeStampFromString:message.uniqueId];
[fetchedThread saveWithTransaction:transaction];
}];
}

View File

@ -14,6 +14,8 @@
#import "IncomingPushMessageSignal.pb.h"
#import "NSData+Base64.h"
#import "PushManager.h"
#import "TSIncomingMessage.h"
#import "TSErrorMessage.h"
#import "TSInfoMessage.h"
@ -222,10 +224,9 @@
incomingMessage = [[TSIncomingMessage alloc] initWithTimestamp:timeStamp inThread:cThread messageBody:body attachements:nil];
thread = cThread;
}
[incomingMessage saveWithTransaction:transaction];
thread.lastMessageId = [TSInteraction timeStampFromString:incomingMessage.uniqueId];
[thread saveWithTransaction:transaction];
NSString *name = [thread name];
[self notifyUserForIncomingMessage:incomingMessage from:name];
}];
}
@ -246,4 +247,12 @@
}];
}
- (void)notifyUserForIncomingMessage:(TSIncomingMessage*)message from:(NSString*)name{
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = [NSString stringWithFormat:@"%@: %@", name, message.body];
notification.soundName = @"default";
notification.category = Signal_Message_Category;
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}
@end

View File

@ -1,6 +1,7 @@
"ACTION_REQUIRED_TITLE" = "Action Required";
"ANSWER_CALL_BUTTON_TITLE" = "Answer";
"APN" = "Incoming Call";
"APN_Message" = "You got a new message!";
"AUDIO_PERMISSION_MESSAGE" = "Signal requires access to your microphone to work properly. You can restore the permission in the Settings app >> Privacy >> Microphone >> Signal";
"CALL_BUTTON_TITLE" = "Call";
"CHALLENGE_CODE_BUTTON_TITLE" = "VERIFY";